Saya ingin membuat opsi dalam bentuk suka
[] I would like to order a [selectbox with pizza] pizza
di mana kotak pilih diaktifkan hanya ketika kotak centang dicentang dan dinonaktifkan ketika tidak dicentang.
Saya datang dengan kode ini:
<form>
<input type="checkbox" id="pizza" name="pizza" value="yes"> <label for="pizza">
I would like to order a</label>
<select name="pizza_kind">
<option>(choose one)</option>
<option value="margaritha">Margaritha</option>
<option value="hawai">Hawai</option>
</select>
pizza.
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script>
var update_pizza = function () {
if ($("#pizza").is(":checked")) {
$("#pizza_kind").removeAttr("disabled");
}
else {
$("#pizza_kind").prop('disabled', 'disabled');
}
};
$(update_pizza);
$("#pizza").change(update_pizza);
</script>
Saya mencoba berbagai metode cara mengatur atribut cacat menggunakan .prop()
, .attr()
dan .disabled=
. Namun, tidak ada yang terjadi. Saat melamar ke <input type="checkbox">
alih - alih <select>
, kode berfungsi dengan baik.
Bagaimana cara menonaktifkan / mengaktifkan <select>
menggunakan jQuery?
Jawaban:
Anda ingin menggunakan kode seperti ini:
Berikut ini contoh kerjanya
sumber
$('#pizza_kind').prop('disabled', false);
dan$('#pizza_kind').prop('disabled', true);
. Seperti yang dikatakan dokumentasi jQuery : Properti umumnya memengaruhi status 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 (). Metode .val () harus digunakan untuk mendapatkan dan menetapkan nilai.Untuk dapat menonaktifkan / mengaktifkan pilihan pertama-tama pilihan Anda memerlukan ID atau kelas. Maka Anda dapat melakukan sesuatu seperti ini:
Nonaktifkan:
Memungkinkan:
sumber
.removeAttr()
tidak lagi menetapkan properti menjadi false jquery.com/upgrade-guide/3.0/… stackoverflow.com/a/13626565/125981Dinonaktifkan adalah Atribut Boolean dari elemen pilih seperti yang dinyatakan oleh WHATWG , itu berarti CARA CARA UNTUK MENONAKTIFKAN dengan jQuery adalah
Ini akan membuat HTML ini
Ini berfungsi untuk XHTML dan HTML (referensi W3School)
Namun itu juga bisa dilakukan dengan menggunakannya sebagai properti
mendapatkan
Yang hanya berfungsi untuk HTML dan bukan XTML
CATATAN: Elemen yang dinonaktifkan tidak akan dikirimkan dengan formulir seperti yang dijawab dalam pertanyaan ini: Elemen formulir yang dinonaktifkan tidak dikirimkan
CATATAN2: Elemen yang dinonaktifkan dapat berwarna abu-abu.
CATATAN 3:
TL; DR
sumber
Cukup gunakan:
DEMO
sumber
Gunakan yang berikut ini:
Atau cukup tambahkan
id="pizza_kind"
ke<select>
tag, seperti<select name="pizza_kind" id="pizza_kind">
: tautan jsfiddleAlasan kode Anda tidak berfungsi adalah karena
$("#pizza_kind")
tidak memilih<select>
elemen karena tidak memilikiid="pizza_kind"
.Sunting: sebenarnya, pemilih yang lebih baik adalah
$("select[name='pizza_kind']")
: tautan jsfiddlesumber
Anda
select
tidak memiliki ID, hanya nama. Anda harus memodifikasi pemilih Anda:Demo: http://jsbin.com/imokuj/2/edit
sumber
maaf untuk menjawab di utas lama tetapi semoga kode saya membantu yang lain di masa depan. i berada dalam skenario yang sama bahwa ketika kotak centang akan dicentang maka beberapa bidang input yang dipilih akan memungkinkan orang bijak lainnya dinonaktifkan.
sumber
Pertanyaan bagus - Saya pikir satu-satunya cara untuk mencapai ini adalah dengan memfilter item di pilih.
Anda dapat melakukan ini melalui plugin jquery. Periksa tautan berikut, ini menjelaskan cara mencapai sesuatu yang mirip dengan yang Anda butuhkan. Terima kasih
jQuery menonaktifkan opsi SELECT berdasarkan Radio yang dipilih (Perlu dukungan untuk semua browser)
sumber