Bu soru 2 yaşında, ancak yine de iyi bir soru ve ilk Google sonucuydu ... ancak mevcut yanıtların tümü HTML özelliğini ( kaldırıldı (removeAttr ("devre dışı")) "devre dışı" olarak ayarlamayı ve kaldırmayı önerir. doğru yaklaşım. Özellik ile mülk arasında çok fazla karışıklık var.
HTML
<input type="button" disabled>
İşaretlemedeki "devre dışı bırakıldı" , W3C tarafından bir boole özniteliği olarak adlandırılır .
HTML ve DOM
Alıntı:
DOM'da bir özellik var; HTML'de, DOM'a ayrıştırılan bir özellik bulunur.
https://stackoverflow.com/a/7572855/664132
JQuery
İlişkili:
Bununla birlikte, kontrol edilen özellik hakkında hatırlanması gereken en önemli kavram, kontrol edilen özelliğe karşılık gelmemesidir. Özelliği, aslında defaultChecked özelliğine karşılık gelen ve başlangıç değerini ayarlamak için tek kullanılmalıdır onay kutusunu. İşaretli özellik değeri, işaretli özellik değişirken onay kutusunun durumu ile değişmez. Bu nedenle, bir onay kutusunun işaretli olup olmadığını belirlemenin çapraz tarayıcı uyumlu yolu özelliği kullanmaktır ...
İlgili:
Özellikler genellikle serileştirilmiş HTML niteliğini değiştirmeden bir DOM öğesinin dinamik durumunu etkiler. Örnekler, giriş öğelerinin value özelliğini, giriş ve düğmelerin devre dışı özelliğini veya bir onay kutusunun işaretli özelliğini içerir. .Atrop () yöntemi yerine devre dışı bırakılmış ve denetlenmiş olarak ayarlamak için .prop () yöntemi kullanılmalıdır.
$( "input" ).prop( "disabled", false );
özet
Form öğelerinin [...] devre dışı durumu gibi DOM özelliklerini [...] değiştirmek için .prop () yöntemini kullanın.
( http://api.jquery.com/attr/ )
Sorunun değiştirilmesinde devre dışı bırak bölümüne gelince: "input" adlı bir olay var, ancak tarayıcı desteği sınırlıdır ve bu bir jQuery olayı değildir, bu nedenle jQuery bunu yapmaz. Change olayı güvenilir bir şekilde çalışır, ancak öğe odağı kaybettiğinde tetiklenir. Yani kişi bu ikisini birleştirebilir (bazı insanlar da keyup yapıştırmayı dinler).
İşte ne demek istediğimi göstermek için test edilmemiş bir kod parçası:
$(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);
});
});