Как отключить / включить поле выбора с помощью jQuery?
Я хотел бы создать опцию в виде
[] I would like to order a [selectbox with pizza] pizza
где selectbox включен только тогда, когда флажок установлен и отключен, когда не установлен.
Я придумал этот код:
<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>
Я пробовал различные методы, как набор атрибутов с помощью .prop(),.attr() и .disabled=. Однако, ничего не происходит. При применении к <input type="checkbox"> вместо <select>, код работает отлично.
Как отключить/включить <select> используя jQuery?
8 ответов:
вы хотели бы использовать такой код:
<form> <input type="checkbox" id="pizza" name="pizza" value="yes"> <label for="pizza">I would like to order a</label> <select id="pizza_kind" 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').prop('disabled', false); } else { $('#pizza_kind').prop('disabled', 'disabled'); } }; $(update_pizza); $("#pizza").change(update_pizza); </script>здесь работает пример
чтобы иметь возможность отключить/включить выбирает в первую очередь свой выбор нужно ID или класс. Затем вы могли бы сделать что-то вроде этого:
отключить:
$('#id').attr('disabled', 'disabled');включить:
$('#id').removeAttr('disabled');
Disabled - это Boolean атрибут на выберите элемент как заявил WHATWG, что означает ПРАВИЛЬНЫЙ СПОСОБ ОТКЛЮЧИТЬ С jQuery было бы
jQuery("#selectId").attr('disabled',true);Это сделало бы этот HTML
<select id="selectId" name="gender" disabled="disabled"> <option value="-1">--Select a Gender--</option> <option value="0">Male</option> <option value="1">Female</option> </select>это работает для обоих XHTML и HTML (w3school reference)
но это также можно сделать, используя его как собственность
jQuery("#selectId").prop('disabled', 'disabled');начало
<select id="selectId" name="gender" disabled>который работает только для HTML, а не XTML
Примечание: отключенный элемент не будет отправлен с формой, как ответили на этот вопрос:отключенный элемент формы не представляется
примечание 2: отключенный элемент может быть выделен серым цветом.
Примечание 3:
элемент управления формы, который был отключен, необходимо предотвратить любой щелкните события, которые поставлены в очередь на источнике задачи взаимодействия с пользователем из отправки на элемент.
TL; DR
<script> var update_pizza = function () { if ($("#pizza").is(":checked")) { $('#pizza_kind').attr('disabled', false); } else { $('#pizza_kind').attr('disabled', true); } }; $(update_pizza); $("#pizza").change(update_pizza); </script>
просто использовать:
var update_pizza = function () { $("#pizza_kind").prop("disabled", !$('#pizza').prop('checked')); }; update_pizza(); $("#pizza").change(update_pizza);демо
использовать следующий:
$("select").attr("disabled", "disabled");или просто добавить
id="pizza_kind"to<select>тег, как<select name="pizza_kind" id="pizza_kind">:jsfiddle linkпричина ваш код не работает, просто потому что
$("#pizza_kind")не выбрав<select>элемент, потому что он не имеетid="pizza_kind".Edit: на самом деле, лучший селектор -
$("select[name='pizza_kind']"):jsfiddle link
код
selectне имеет идентификатора, только имя. Вам нужно будет изменить свой селектор:$("#pizza").on("click", function(){ $("select[name='pizza_kind']").prop("disabled", !this.checked); });
извините за ответ в старом потоке, но мой код может помочь другим в будущем.я был в том же сценарии, что когда флажок будет установлен, то несколько выбранных полей ввода будут включены другие мудрые отключены.
$("[id*='chkAddressChange']").click(function () { var checked = $(this).is(':checked'); if (checked) { $('.DisabledInputs').removeAttr('disabled'); } else { $('.DisabledInputs').attr('disabled', 'disabled'); } });
хороший вопрос-я думаю, что единственный способ добиться этого-фильтровать элементы в select.
Вы можете сделать это через плагин jQuery. Проверьте следующую ссылку, она описывает, как достичь чего-то похожего на то, что вам нужно. Спасибо
jQuery отключить выбор параметров на основе выбранного Радио (нужна поддержка для всех браузеров)
Comments