Bagaimana saya bisa menambahkan readonly
ke spesifik <input>
? .attr('readonly')
tidak bekerja.
javascript
jquery
Qiao
sumber
sumber
Jawaban:
jQuery <1.9
jQuery 1.9+
Baca lebih lanjut tentang perbedaan antara prop dan attr
sumber
Gunakan $ .prop ()
sumber
$.prop()
: Prop akan mengatur atribut readonly menjadi string kosong / kosong, jadi jika Anda memiliki CSS yang menggunakan pemilih atribut untuk[readonly="readonly"]
, maka Anda harus mengubahnya ke[readonly]
(atau memasukkan keduanya).Readonly adalah atribut yang didefinisikan dalam html, jadi perlakukan itu seperti atribut.
Anda perlu memiliki sesuatu seperti readonly = "readonly" pada objek yang Anda kerjakan jika Anda ingin itu tidak dapat diedit. Dan jika Anda ingin dapat diedit lagi Anda tidak akan memiliki sesuatu seperti readonly = '' (ini bukan standar jika saya mengerti dengan benar). Anda benar-benar perlu menghapus atribut secara keseluruhan.
Dengan demikian, saat menggunakan jquery menambahkan dan menghapusnya adalah hal yang masuk akal.
Atur sesuatu hanya baca:
Hapus hanya baca:
Ini adalah satu-satunya alternatif yang benar-benar bekerja untuk saya. Semoga ini bisa membantu!
sumber
.attr('readonly', 'readonly')
harus melakukan trik. Anda.attr('readonly')
hanya mengembalikan nilai, itu tidak menetapkan satu.sumber
.attr
nilai hanya harus string atau nomor, tidak boolean, menurut docs jQuery: api.jquery.com/attr/#attr2 Juga, HTML "atribut boolean" hanya harus string kosong atau nilai atribut. Saya pikir solusinya adalah menggunakan.prop()
untuk menghindari kebingungan.Saya pikir "dinonaktifkan" mengecualikan input dari yang dikirim pada POST
sumber
Anda dapat menonaktifkan readonly dengan menggunakan .removeAttr;
sumber
Untuk mengaktifkan readonly:
Untuk menonaktifkan baca saja
sumber
Gunakan properti setAttribute. Perhatikan dalam contoh bahwa jika pilih 1 menerapkan atribut readonly pada kotak teks, jika tidak hapus atribut readonly.
http://jsfiddle.net/baqxz7ym/2/
sumber
Untuk versi jQuery <1.9:
Untuk versi jQuery> = 1.9:
sumber