Подтвердить что ты не робот

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, который отделяется от флажка?

Спасибо

4b9b3361

Ответ 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");