JQuery - 设置属性值

时间:2010-01-05 22:29:51

标签: javascript jquery

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

跟随HTML
<input type="hidden" name= "chk0" value="">
<input type="checkbox" name="chk0" value="true" disabled>

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

$('#chk0').attr("disabled",false);

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

由于

6 个答案:

答案 0 :(得分:27)

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

用作选择器的哈希(#)用于ID,而不用于元素的名称。 禁用属性也不是真正的错误情况..如果它已禁用属性,则表示它是真的..您需要删除该属性而不将其设置为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

答案 1 :(得分:10)

说真的,不要为此使用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;

答案 2 :(得分:5)

“True”和“False”不起作用,禁用,设置为禁用值。

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

启用,删除。

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

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

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

答案 3 :(得分:2)

$(“#chk0”)引用id为chk0的元素。您可以尝试将id添加到元素中。即使名称相同,ID也是唯一的,因此在jQuery中,您可以通过它的id访问单个元素。

答案 4 :(得分:0)

使用ID唯一标识复选框。您当前的示例是尝试选中ID为“#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" />

请注意,禁用属性的缺席会启用输入元素。

答案 5 :(得分:0)

您可以添加不同的类来进行选择,或者按类型选择:

$('input[type="checkbox"]').removeAttr("disabled");