Chciałbym stworzyć opcję w postaci np
[] I would like to order a [selectbox with pizza] pizza
gdzie pole wyboru jest włączone tylko wtedy, gdy pole wyboru jest zaznaczone i wyłączone, gdy nie jest zaznaczone.
Wymyślam ten kod:
<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>
Próbowałem różnych metod, jak ustawić atrybut disabled użyciu .prop()
, .attr()
oraz .disabled=
. Jednak nic się nie dzieje. W przypadku zastosowania <input type="checkbox">
zamiast <select>
a kod działa doskonale.
Jak wyłączyć / włączyć <select>
za pomocą jQuery?
Odpowiedzi:
Chciałbyś użyć takiego kodu:
Oto działający przykład
źródło
$('#pizza_kind').prop('disabled', false);
i$('#pizza_kind').prop('disabled', true);
. Jak mówi dokumentacja jQuery : Właściwości ogólnie wpływają na dynamiczny stan elementu DOM bez zmiany zserializowanego atrybutu HTML. Przykłady obejmują właściwość value elementów wejściowych, wyłączoną właściwość wejść i przycisków lub zaznaczoną właściwość pola wyboru. Metoda .prop () powinna być używana do wyłączania i sprawdzania zamiast metody .attr (). Do pobierania i ustawiania wartości należy używać metody .val ().Aby móc wyłączać / włączać zaznaczenia, najpierw musisz mieć identyfikator lub klasę. Wtedy możesz zrobić coś takiego:
Wyłączyć:
Włączyć:
źródło
.removeAttr()
nie ustawia już właściwości na false jquery.com/upgrade-guide/3.0/... stackoverflow.com/a/13626565/125981Wyłączone jest to logiczny atrybut z elementu select jak stwierdził WHATWG , oznacza to, że właściwy sposób, aby wyłączyć z jQuery byłoby
To spowodowałoby, że ten HTML
Działa to zarówno dla XHTML, jak i HTML (dokumentacja W3School)
Jednak można to również zrobić, używając go jako własności
uzyskiwanie
Który działa tylko w przypadku HTML, a nie XTML
UWAGA: Wyłączony element nie zostanie przesłany z formularzem, zgodnie z odpowiedzią na to pytanie: Wyłączony element formularza nie został przesłany
UWAGA 2: Wyłączony element może być wyszarzony.
UWAGA 3:
TL; DR
źródło
Po prostu użyj:
DEMO
źródło
Użyj następujących:
Lub po prostu dodaj
id="pizza_kind"
do<select>
tagu, na przykład<select name="pizza_kind" id="pizza_kind">
: jsfiddle linkTwój kod nie zadziałał, ponieważ
$("#pizza_kind")
nie wybrał<select>
elementu, ponieważ go nie maid="pizza_kind"
.Edycja: właściwie lepszym selektorem jest
$("select[name='pizza_kind']")
: link jsfiddleźródło
Twój
select
nie ma identyfikatora, tylko imię. Musisz zmodyfikować swój selektor:Demo: http://jsbin.com/imokuj/2/edit
źródło
przepraszam, że odpowiadam w starym wątku, ale może mój kod pomoże innym w przyszłości. i był w tym samym scenariuszu, że gdy pole wyboru zostanie zaznaczone, to kilka wybranych pól wejściowych zostanie włączonych inne mądre wyłączone.
źródło
Dobre pytanie - myślę, że jedynym sposobem na osiągnięcie tego jest przefiltrowanie wybranych elementów.
Możesz to zrobić za pomocą wtyczki jquery. Sprawdź poniższy link, opisuje, jak osiągnąć coś podobnego do tego, czego potrzebujesz. Dzięki
jQuery wyłącz opcję SELECT na podstawie wybranego radia (potrzebujesz wsparcia dla wszystkich przeglądarek)
źródło