使用jQuery引用Array中的表单字段

时间:2011-04-29 02:26:17

标签: 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函数中,我想启用/禁用相关的输入文本输入 - b单击复选框时。

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

非常感谢任何帮助!

4 个答案:

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

http://jsfiddle.net/R28dV/4/

答案 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再次有效,您的问题也会得到解决。