JQuery - установить значение атрибута
У меня есть следующий HTML-код с двумя элементами, имеющими одно и то же имя
<input type="hidden" name= "chk0" value="">
<input type="checkbox" name="chk0" value="true" disabled>
Через JQuery я хочу установить флажок enable. Итак, я использую что-то вроде этого:
$('#chk0').attr("disabled",false);
Но это не работает. Я предполагаю, что JQuery путается с двумя элементами с одинаковым именем. К сожалению, я не могу избежать использования двух разных имен, потому что, когда форма размещена, я хочу, чтобы все флажки были размещены (а не только те, которые были отмечены). Следовательно, я должен использовать скрытый элемент с тем же именем. Итак, вернемся к вопросу, как я могу включить флажок через JQuery в приведенном выше сценарии? Есть ли параметр "type" для attr, который отделяется от флажка?
Спасибо
Ответы
Ответ 1
Некоторые вещи до фактического кода.
хеш (#), который вы используете в качестве селектора, предназначен для идентификаторов, а не для имен элементов.
также отключенный атрибут не является истинным ложным сценарием.. если он отключил атрибут, это значит, что это правда.. вам нужно удалить атрибут и не установить его в false.
Также есть селектора форм, которые идентифицируют конкретные типы элементов в форме.
поэтому код будет
$("input:checkbox[name='chk0']").removeAttr('disabled');
Приведение ответа в актуальное состояние
Вы должны использовать метод .prop()
(добавленный после версии v1.6)
$("input:checkbox[name='chk0']").prop('disabled', false); // to enable the checkbox
и
$("input:checkbox[name='chk0']").prop('disabled', true); // to disable the checkbox
Ответ 2
Серьезно, просто не используйте jQuery для этого. disabled
- это логическое свойство элементов формы, которое отлично работает в каждом крупном браузере с 1997 года, и нет никакого способа, чтобы было проще или интуитивно изменить, отключен ли элемент формы.
Самый простой способ получить ссылку на этот флажок - дать ему id
. Вот мой предложенный HTML:
<input type="hidden" name="chk0" value="">
<input type="checkbox" name="chk0" id="chk0_checkbox" value="true" disabled>
И строка JavaScript, чтобы включить этот флажок:
document.getElementById("chk0_checkbox").disabled = false;
Если вы предпочитаете, вместо этого вы можете использовать jQuery, чтобы установить флажок:
$("#chk0_checkbox")[0].disabled = false;
Ответ 3
"True" и "False" не работают, отключить, установить значение "отключено".
$('.someElement').attr('disabled', 'disabled');
Чтобы включить, удалите.
$('.someElement').removeAttr('disabled');
Кроме того, не беспокойтесь о выборе нескольких элементов, jQuery будет работать на всех из них, которые соответствуют. Если вам нужен только один, вы можете использовать много вещей: во-первых,: последний, n-й и т.д.
Вы используете имя, а не id, как другое упоминание - помните, что если вы используете id valid xhtml, необходимо, чтобы идентификаторы были уникальными.
Ответ 4
$( "# chk0" ) ссылается на элемент с id chk0. Вы можете попробовать добавить id к элементам. Идентификаторы уникальны, хотя имена одинаковы, так что в jQuery вы можете получить доступ к одному элементу с помощью идентификатора.
Ответ 5
Используйте идентификатор, чтобы однозначно идентифицировать этот флажок. Ваш текущий пример пытается установить флажок с идентификатором '# chk0':
<input type="checkbox" id="chk0" name="chk0" value="true" disabled>
$('#chk0').attr("disabled", "disabled");
Вам также необходимо удалить атрибут для disabled
, чтобы включить этот флажок. Что-то вроде:
$('#chk0').removeAttr("disabled");
Смотрите документы для removeAttr
Значение XHTML для отключения/включения входного элемента выглядит следующим образом:
<input type="checkbox" id="chk0" name="chk0" value="true" disabled="disabled" />
<input type="checkbox" id="chk0" name="chk0" value="true" />
Обратите внимание, что это отсутствие атрибута disabled, который активирует входной элемент.
Ответ 6
Вы можете добавить разные классы для выбора или выбрать по типу, как это:
$('input[type="checkbox"]').removeAttr("disabled");