JQuery - 设置属性值

Jak*_*ake 31 javascript jquery

我有两个具有相同名称的元素的HTML

<input type="hidden" name= "chk0" value="">
<input type="checkbox" name="chk0" value="true" disabled>
Run Code Online (Sandbox Code Playgroud)

通过JQuery,我想设置启用复选框.所以,我使用的是这样的东西:

$('#chk0').attr("disabled",false);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我假设JQuery与两个具有相同名称的元素混淆.不幸的是,我无法避免使用两个不同的名称,因为当发布表单时,我希望所有复选框都被发布(不仅仅是被检查的复选框).因此我必须使用具有相同名称的隐藏元素.所以,回到问题,如何在上面的场景中通过JQuery启用复选框?是否存在attr的"type"参数,其中distingues隐藏了复选框?

谢谢

Gab*_*oli 28

实际代码之前的一些事情..

您用作选择器的哈希(#)用于ID,而不用于元素的名称.禁用属性也不是真正的错误情况..如果它已禁用属性,则表示它是真的..您需要删除该属性而不将其设置为false.还有表单选择器,用于标识表单中特定类型的项目.

所以代码就是

$("input:checkbox[name='chk0']").removeAttr('disabled');
Run Code Online (Sandbox Code Playgroud)

使答案保持最新状态

您应该使用该.prop()方法(自v1.6起添加)

$("input:checkbox[name='chk0']").prop('disabled', false); // to enable the checkbox
Run Code Online (Sandbox Code Playgroud)

$("input:checkbox[name='chk0']").prop('disabled', true); // to disable the checkbox
Run Code Online (Sandbox Code Playgroud)

  • 实际上****是一个真正的错误场景.jQuery的`attr`方法设置JS属性**而不是**HTML属性(除了几个角落的案例解决方法;它确实将HTML属性名称转换为JS属性名称,但这并不意味着它使用属性访问).`attr('disabled','disabled')`只能起作用,因为字符串''disabled'`是真的; 当你将它分配给布尔属性`disabled`时,它就像`true`.但是''banana'`和任何其他非空字符串也是如此. (3认同)

Tim*_*own 10

说真的,不要为此使用jQuery.disabled是表单元素的布尔属性,自1997年以来在每个主要浏览器中都能很好地工作,并且没有可能更简单或更直观地更改表单元素是否被禁用.

获取对复选框的引用的最简单方法是给它一个id.这是我建议的HTML:

<input type="hidden" name="chk0" value="">
<input type="checkbox" name="chk0" id="chk0_checkbox" value="true" disabled>
Run Code Online (Sandbox Code Playgroud)

以及启用复选框的JavaScript行:

document.getElementById("chk0_checkbox").disabled = false;
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以使用jQuery来获取复选框:

$("#chk0_checkbox")[0].disabled = false;
Run Code Online (Sandbox Code Playgroud)


Hog*_*gan 5

"True"和"False"不起作用,禁用,设置为禁用值.

$('.someElement').attr('disabled', 'disabled');

要启用,删除.

$('.someElement').removeAttr('disabled');

此外,不要担心选择多个项目,jQuery将对匹配的所有项目进行操作.如果你只需要一个,你可以使用很多东西:第一,:last,nth等.

您正在使用名称而不是其他提及的ID - 请记住,如果您使用id有效xhtml要求ID是唯一的.

  • `attr`没有做你认为它做的事. (3认同)