Saya punya HTML ini:
<input type="text" name="textField" />
<input type="submit" value="send" />
Bagaimana saya bisa melakukan sesuatu seperti ini:
- Ketika bidang teks kosong, pengiriman harus dinonaktifkan (dinonaktifkan = "dinonaktifkan").
- Ketika sesuatu diketik dalam bidang teks untuk menghapus atribut yang dinonaktifkan.
- Jika bidang teks menjadi kosong lagi (teks dihapus) tombol kirim harus dinonaktifkan lagi.
Saya mencoba sesuatu seperti ini:
$(document).ready(function(){
$('input[type="submit"]').attr('disabled','disabled');
$('input[type="text"]').change(function(){
if($(this).val != ''){
$('input[type="submit"]').removeAttr('disabled');
}
});
});
... tapi itu tidak berhasil. Ada ide?
javascript
jquery
html
forms
kmunky
sumber
sumber
Jawaban:
Masalahnya adalah bahwa perubahan acara hanya terjadi ketika fokus dipindahkan dari input (misalnya seseorang mengklik input atau tab keluar dari itu). Coba gunakan keyup sebagai gantinya:
sumber
input id="loginButton" type="submit" name="Submit" value="Login" disabled>
akan menunjukkan tombol dinonaktifkan dengan css kelas dinonaktifkan.sumber
Pertanyaan ini berumur 2 tahun tetapi masih merupakan pertanyaan yang bagus dan ini adalah hasil Google pertama ... tetapi semua jawaban yang ada merekomendasikan pengaturan dan menghapus atribut HTML (removeAttr ("dinonaktifkan")) "dinonaktifkan", yang bukan pendekatan yang tepat. Ada banyak kebingungan mengenai atribut vs properti.
HTML
"Dinonaktifkan" di
<input type="button" disabled>
dalam markup disebut atribut boolean oleh W3C .HTML vs. DOM
Mengutip:
https://stackoverflow.com/a/7572855/664132
JQuery
Terkait:
Relevan:
Ringkasan
Untuk [...] mengubah properti DOM seperti status elemen formulir [...] yang dinonaktifkan, gunakan metode .prop () .
( http://api.jquery.com/attr/ )
Sedangkan untuk menonaktifkan pada bagian perubahan pertanyaan: Ada acara yang disebut "input", tetapi dukungan browser terbatas dan itu bukan acara jQuery, jadi jQuery tidak akan membuatnya berfungsi. Acara perubahan bekerja dengan andal, tetapi dipecat saat elemen kehilangan fokus. Jadi orang mungkin menggabungkan keduanya (beberapa orang juga mendengarkan keyup dan paste).
Berikut adalah bagian kode yang belum diuji untuk menunjukkan apa yang saya maksud:
sumber
Untuk menghapus penggunaan atribut yang dinonaktifkan,
dan untuk menambahkan penggunaan atribut yang dinonaktifkan,
Nikmati :)
sumber
atau bagi kami yang tidak suka menggunakan jQ untuk setiap hal kecil:
sumber
eric, kode Anda sepertinya tidak berfungsi untuk saya ketika pengguna memasukkan teks lalu menghapus semua teks. saya membuat versi lain jika ada yang mengalami masalah yang sama. di sini ya pergi orang:
sumber
Ini akan bekerja seperti ini:
Pastikan ada atribut 'dinonaktifkan' di HTML Anda
sumber
Inilah solusi untuk bidang input file .
Untuk menonaktifkan tombol kirim untuk bidang file ketika file tidak dipilih, maka aktifkan setelah pengguna memilih file untuk diunggah:
Html:
sumber
Anda juga dapat menggunakan sesuatu seperti ini:
di sini adalah contoh langsung
sumber
Untuk login form:
Javascript:
sumber
Jika tombol itu sendiri adalah tombol gaya jQuery (dengan .button ()) Anda perlu menyegarkan keadaan tombol sehingga kelas yang benar ditambahkan / dihapus setelah Anda menghapus / menambahkan atribut yang dinonaktifkan.
sumber
Jawaban di atas tidak membahas juga memeriksa untuk acara cut / paste berbasis menu. Di bawah ini adalah kode yang saya gunakan untuk melakukan keduanya. Perhatikan bahwa tindakan sebenarnya terjadi dengan batas waktu karena peristiwa cut dan masa lalu benar-benar terjadi sebelum perubahan terjadi, sehingga batas waktu memberikan sedikit waktu untuk itu terjadi.
sumber
Solusi Vanilla JS. Ini berfungsi untuk seluruh bentuk tidak hanya satu input.
Dalam pertanyaan, tag JavaScript yang dipilih.
Formulir HTML:
Beberapa penjelasan:
Dalam kode ini kami menambahkan acara keyup pada formulir html dan pada setiap penekanan tombol periksa semua kolom input. Jika setidaknya satu bidang input yang kami miliki kosong atau hanya berisi karakter spasi, maka kami memberikan nilai sebenarnya ke variabel yang dinonaktifkan dan menonaktifkan tombol kirim.
Jika Anda perlu menonaktifkan tombol kirim hingga semua kolom input yang diperlukan diisi - ganti:
dengan:
di mana diperlukan_input sudah array yang dinyatakan hanya berisi bidang input yang diperlukan.
sumber
Kami dapat dengan mudah memiliki jika & jika. Jika input Anda kosong, kami dapat memilikinya
kalau tidak kita bisa mengubah false menjadi true
sumber
Nonaktifkan:
$('input[type="submit"]').prop('disabled', true);
Memungkinkan:
$('input[type="submit"]').removeAttr('disabled');
Kode aktifkan di atas lebih akurat daripada:
Anda dapat menggunakan kedua metode ini.
sumber
Saya harus bekerja sedikit agar ini sesuai dengan kasus penggunaan saya.
Saya memiliki formulir tempat semua bidang harus memiliki nilai sebelum mengirim.
Inilah yang saya lakukan:
Terima kasih untuk semuanya atas jawaban mereka di sini.
sumber
Silakan lihat kode di bawah ini untuk mengaktifkan atau menonaktifkan tombol Kirim
sumber
lihat cuplikan ini dari proyek saya
$(this).attr('disabled', 'disabled');
sumber
Semua jenis solusi disediakan. Jadi saya ingin mencoba solusi yang berbeda. Sederhananya akan lebih mudah jika Anda menambahkan
id
atribut di bidang input Anda.Sekarang ini milikmu
jQuery
sumber
Semoga kode di bawah ini akan membantu seseorang .. !!! :)
sumber