我有一个HTML表单,如下所示:
<td><input type='checkbox' id='a[] '><input type='text' id='b[]'></td>
<td><input type='checkbox' id='a[] '><input type='text' id='b[]'></td>
在jQuery函数中,我想启用/禁用相关的输入文本输入 - b单击复选框时。
我不确定在使用数组时如何在jQuery .click()函数中单独引用每个字段。
非常感谢任何帮助!
答案 0 :(得分:2)
与Thomas类似的概念,但在页面加载时执行并抛出.focus()以获得良好的衡量标准:
$(function(){
var toggleState = function(){
if($(this).is(':checked'))
$(this).next('[name="b"]').removeAttr('disabled').focus();
else
$(this).next('[name="b"]').attr('disabled','disabled');
};
//bind event and fire off on page load
$('input[name="a"]').bind('click',toggleState).each(toggleState);
})
此外,您不应该有重复的ID ...按类使用name属性或目标。
<table>
<tr><td><input type='checkbox' name='a'><input type='text' name='b'></td></tr>
<tr><td><input type='checkbox' name='a'><input type='text' name='b'></td></tr>
</table>
答案 1 :(得分:1)
试试这个(我确定有一个更简洁的方法,但我在这里没有IntelliSense大声笑)
$("checkbox").click(function(){
if($(this).next().attr("disabled") == "disabled") {
$(this).next().attr("disabled", "");
}
else {
$(this).next().attr("disabled", "disabled");
}
});
答案 2 :(得分:1)
删除disabled
属性以启用输入。将disabled
属性设置为任何值,通常为“禁用”,以禁用输入。设置disabled=""
不够好,仅仅存在属性会禁用输入。您必须删除该属性。
$("input[type=checkbox]").click(function()
{
if (this.checked) $(this).next().removeAttr("disabled");
else $(this).next().attr("disabled", "disabled");
});
答案 3 :(得分:0)
如果您有重复的ID,您的HTML无效。为他们提供唯一ID,以便您的HTML再次有效,您的问题也会得到解决。