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:
Properti berada di DOM; atribut dalam HTML yang diuraikan ke dalam DOM.
https://stackoverflow.com/a/7572855/664132
JQuery
Terkait:
Namun demikian, konsep yang paling penting untuk diingat tentang atribut yang diperiksa adalah bahwa itu tidak sesuai dengan properti yang diperiksa. The atribut benar-benar sesuai dengan properti defaultChecked dan harus digunakan hanya untuk menetapkan nilai awal dari kotak centang. Nilai atribut yang dicentang tidak berubah dengan keadaan kotak centang, sedangkan properti yang dicentang tidak. Oleh karena itu, cara yang kompatibel lintas-browser untuk menentukan apakah kotak centang dicentang adalah dengan menggunakan properti ...
Relevan:
Properti umumnya memengaruhi keadaan dinamis elemen DOM tanpa mengubah atribut HTML serial. Contohnya termasuk properti nilai elemen input, properti input dan tombol yang dinonaktifkan , atau properti yang dicentang dari kotak centang. Metode .prop () harus digunakan untuk mengatur dinonaktifkan dan diperiksa, bukan metode .attr ().
$( "input" ).prop( "disabled", false );
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:
$(document).ready(function() {
var $submit = $('input[type="submit"]');
$submit.prop('disabled', true);
$('input[type="text"]').on('input change', function() { //'input change keyup paste'
$submit.prop('disabled', !$(this).val().length);
});
});