Saya harus menonaktifkan input pada awalnya dan kemudian mengklik tautan untuk mengaktifkannya.
Inilah yang saya coba sejauh ini, tetapi tidak berhasil.
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">
jQuery:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').removeAttr("disabled")
});
Ini menunjukkan saya true
dan kemudian false
tetapi tidak ada perubahan untuk input:
$("#edit").click(function(event){
alert('');
event.preventDefault();
alert($('.inputDisabled').attr('disabled'));
$('.inputDisabled').removeAttr("disabled");
alert($('.inputDisabled').attr('disabled'));
});
javascript
jquery
disabled-input
fatiDev
sumber
sumber
Jawaban:
Selalu gunakan
prop()
metode untuk mengaktifkan atau menonaktifkan elemen saat menggunakan jQuery (lihat alasannya di bawah).Dalam kasus Anda, itu akan menjadi:
Contoh jsFiddle di sini.
Pada dasarnya,
prop()
harus digunakan ketika mendapatkan atau pengaturan properti (sepertiautoplay
,checked
,disabled
danrequired
antara lain).Dengan menggunakan
removeAttr()
, Anda benar-benar menghapusdisabled
atribut itu sendiri - sementaraprop()
hanya menyetel nilai boolean yang mendasari properti menjadi false.Sementara apa yang ingin Anda lakukan dapat dilakukan menggunakan
attr()
/removeAttr()
, itu tidak berarti harus dilakukan (dan dapat menyebabkan perilaku aneh / bermasalah, seperti dalam kasus ini).Ekstrak berikut (diambil dari dokumentasi jQuery for prop () ) menjelaskan poin-poin ini secara lebih rinci:
sumber
attr
vsprop
untuk kotak centang: w3.org/TR/html5/forms.html#concept-input-checked-dirty kecuali untuk sihir solusi jQuery internal..prop()
dieksekusi pada elemen yang ditunjuk olehthis
(this.prop("disabled", false)
, tetapi menjadi panggilan balik itu mengikat elemen yang salah, jadi saya harus melakukanvar that = this
solusi umum . Mencoba bermain dengan.apply()
/.call()
tidak bekerja dengan baik; Saya tidak tahu mengapa. Periksa dengan aconsole.log(this)
jika diatur ke objek yang Anda inginkan, sebelum meneleponthis.prop(...)
disabled
properti saja akan menonaktifkan elemen. Misalnya, memiliki<button disabled="false"></button>
tidak akan mengaktifkan tombol, properti harus dihapus. Dengan memanggil$('button').prop('disabled', false);
jQuery akan menghapus properti untuk Anda, seperti yang saya amati dalam codepen ini (periksa untuk melihat penghapusan properti).http://jsfiddle.net/ZwHfY/
sumber
untuk menghapus penggunaan atribut yang dinonaktifkan,
dan untuk menambahkan penggunaan atribut yang dinonaktifkan,
Nikmati :)
sumber
Gunakan seperti ini,
HTML:
JS:
sumber
<a>
, yang.prop('disabled', false)
tidak berfungsi. Saya mengubahnya menjadi<button>
dan berfungsi sekarangSaya pikir Anda mencoba untuk beralih ke keadaan dinonaktifkan, jika Anda harus menggunakan ini (dari pertanyaan ini ):
Ini biola yang berfungsi.
sumber
Pikir ini, Anda dapat dengan mudah mengatur
sumber
Ini adalah satu-satunya kode yang berfungsi untuk saya:
Perhatikan bahwa ini
removeProp
dan bukanremoveAttr
.Saya menggunakan di
jQuery 2.1.3
sini.sumber
2018, tanpa JQuery
Saya tahu pertanyaannya adalah tentang JQuery: jawaban ini hanya FYI.
sumber
Pertanyaan ini secara khusus menyebutkan jQuery, tetapi jika Anda ingin menyelesaikan ini tanpa jQuery, padanannya dalam vanilla JavaScript adalah:
sumber
elem.removeAttr('disabled');
bekerja untuk saya