Saya memiliki formulir yang saya ingin semua bidang diisi. Jika bidang diklik dan kemudian tidak diisi, saya ingin menampilkan latar belakang merah.
Ini kode saya:
$('#apply-form input').blur(function () {
if ($('input:text').is(":empty")) {
$(this).parents('p').addClass('warning');
}
});
Itu berlaku kelas peringatan terlepas dari bidang yang diisi atau tidak.
Apa yang saya lakukan salah?
jquery
validation
Keith Donegan
sumber
sumber
Jawaban:
Dan Anda tidak perlu
.length
atau melihat apakah itu>0
karena string kosong bernilai false, tetapi jika Anda ingin untuk tujuan keterbacaan:Jika Anda yakin itu akan selalu beroperasi pada elemen textfield maka Anda bisa menggunakannya
this.value
.Anda juga harus mencatat bahwa
$('input:text')
mengambil beberapa elemen, menentukan konteks atau menggunakanthis
kata kunci jika Anda hanya ingin referensi ke elemen tunggal (asalkan ada satu bidang teks pada keturunan / anak-anak konteks).sumber
.val().length
dan bukannya menggunakan.length()
elemen itu sendiri.Setiap orang memiliki ide yang tepat, tetapi saya ingin sedikit lebih eksplisit dan memotong nilai-nilai.
jika Anda tidak menggunakan .length, maka entri '0' dapat ditandai sebagai buruk, dan entri 5 spasi bisa ditandai sebagai ok tanpa $ .trim. Semoga berhasil.
sumber
this.val
akan ada diundefined
sana. Itu perlu$(this).val()
- tetapi tidak ada keuntungan lintas-browser untuk itu, jadi saya meninggalkannya untuk singkatnya / kecepatan.Melakukannya dengan blur terlalu terbatas. Diasumsikan ada fokus pada form isian, jadi saya lebih suka melakukannya pada submit, dan memetakan melalui input. Setelah bertahun-tahun berurusan dengan trik blur mewah, fokus, dll., Menjaga hal-hal yang lebih sederhana akan menghasilkan lebih banyak kegunaan di mana ia penting.
sumber
sumber
$
diif (('input:text').val().length == 0) {
itu harusif ($('input:text').val().length == 0) {
Anda bisa menggunakan juga ..
jika Anda ragu tentang spasi, maka coba ..
sumber
kenapa tidak ada yang disebutkan
tampaknya lebih seperti jquery bagiku
sumber
Peristiwa keyup akan mendeteksi jika pengguna telah membersihkan kotak juga (yaitu backspace meningkatkan acara tetapi backspace tidak meningkatkan acara penekanan tombol di IE)
sumber
Pertimbangkan untuk menggunakan plugin validasi jQuery sebagai gantinya. Mungkin sedikit berlebihan untuk bidang sederhana yang diperlukan, tetapi cukup matang sehingga menangani kasus tepi yang belum Anda pikirkan (juga tidak akan ada di antara kita sampai kita menabraknya).
Anda dapat menandai bidang yang diperlukan dengan kelas "wajib", jalankan $ ('form'). Validate () dalam $ (dokumen) .ready () dan hanya itu yang diperlukan.
Bahkan di-host di Microsoft CDN juga, untuk pengiriman cepat: http://www.asp.net/ajaxlibrary/CDN.ashx
sumber
The
:empty
pseudo-selector digunakan untuk melihat apakah sebuah elemen tidak mengandung Childs, Anda harus memeriksa nilai:sumber
Ada satu hal lagi yang mungkin ingin Anda pikirkan, Saat ini hanya dapat menambahkan kelas peringatan jika kosong, bagaimana dengan menghapus kelas lagi ketika formulir tidak kosong lagi.
seperti ini:
sumber
sumber
Ini adalah contoh penggunaan keyup untuk input yang dipilih. Ini menggunakan trim juga untuk memastikan bahwa urutan karakter spasi hanya tidak memicu respons yang benar. Ini adalah contoh yang dapat digunakan untuk memulai kotak pencarian atau sesuatu yang terkait dengan jenis fungsionalitas itu.
sumber
Periksa apakah semua bidang kosong dan tambahkan ON atau OFF di Filter_button
sumber
Anda dapat mencoba sesuatu seperti ini:
Ini hanya akan berlaku
.blur()
untuk input dengan nilai kosong.sumber
sumber
Dengan HTML 5 kita dapat menggunakan fitur baru "wajib", tambahkan saja ke tag yang Anda inginkan seperti:
<input type='text' required>
sumber
Kumpulan jawaban yang hebat, ingin menambahkan bahwa Anda juga dapat melakukan ini menggunakan
:placeholder-shown
pemilih CSS. Sedikit lebih bersih untuk menggunakan IMO, terutama jika Anda sudah menggunakan jQ dan memiliki pengganti pada input Anda.Anda juga dapat menggunakan
:valid
dan:invalid
penyeleksi jika Anda memiliki input yang diperlukan. Anda dapat menggunakan penyeleksi ini jika Anda menggunakan atribut yang diperlukan pada input.sumber
Solusi khusus CSS bersih ini adalah:
sumber