使用jQuery引用数组中的表单字段

使用jQuery引用数组中的表单字段,jquery,html,forms,Jquery,Html,Forms,我有一个类似以下内容的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函数中,我希望在单击复选框时启用/禁用关联的输入文本input

我有一个类似以下内容的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函数中,我希望在单击复选框时启用/禁用关联的输入文本input-b

我不确定如何在使用数组时在jQuery.click()函数中单独引用每个字段


任何帮助都将不胜感激

如果您有重复的ID,则HTML无效。给他们唯一的ID,这样你的HTML就再次有效,你的问题也就解决了。

如果你有重复的ID,你的HTML就无效了。给他们唯一的ID,这样你的HTML再次有效,你的问题也就解决了。

试试这个(我肯定有更简洁的方法,但我这里没有IntelliSense lol)

试试这个(我肯定有更简洁的方法,但我这里没有智能感知lol)


与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。。。按类使用名称属性或目标

<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>


与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。。。按类使用名称属性或目标

<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>


删除
禁用属性以启用输入。将
disabled
属性设置为任何值(通常为“disabled”),以禁用输入。设置
disabled=”“
不够好,仅属性的存在就禁用了输入。您必须删除该属性

$("input[type=checkbox]").click(function()
{
    if (this.checked) $(this).next().removeAttr("disabled");
    else $(this).next().attr("disabled", "disabled");
});

删除禁用的
属性以启用输入。将
disabled
属性设置为任何值(通常为“disabled”),以禁用输入。设置
disabled=”“
不够好,仅属性的存在就禁用了输入。您必须删除该属性

$("input[type=checkbox]").click(function()
{
    if (this.checked) $(this).next().removeAttr("disabled");
    else $(this).next().attr("disabled", "disabled");
});

干杯,德里克。后来我把它改成了课堂目标。我注意到你从名字中删除了[],这是我最大的问题。在仍然使用数组的情况下是否可以执行此操作?是的,如果要按类设置目标,则可以将名称保留为数组。您可能可以使用带括号的name属性作为目标,但我相信通过类名作为目标更有效。检查原始的JSFIDLE链接以获得更新的代码,从而利用类定向的欢呼声Derek。后来我把它改成了课堂目标。我注意到你从名字中删除了[],这是我最大的问题。在仍然使用数组的情况下是否可以执行此操作?是的,如果要按类设置目标,则可以将名称保留为数组。您可能可以使用带括号的name属性作为目标,但我相信通过类名作为目标更有效。检查原始JSFIDLE链接以获取更新的代码,从而利用类定位