0

我有一个多行的表。每行都有相同的输入名称,并附有一个递增的数字。

<table class="table.authors-list">
    <tr>
        <td>
            <input type="text" name="first_name_1" id="first_name_1">
            <input type="text" name="last_name_1" id="first_name_1">
            <input type="checkbox" name="treated_1" id="treated_1">
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" name="first_name_2" id="first_name_2">
            <input type="text" name="last_name_2" id="first_name_2">
            <input type="checkbox" name="treated_2" id="treated_2">
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" name="first_name_3" id="first_name_3">
            <input type="text" name="last_name_3" id="first_name_3">
            <input type="checkbox" name="treated_3" id="treated_3">
        </td>
    </tr>
</table>

在输入信息first_name_2时,我想

我的jQuery函数是:

function calculateRow(row, cb) {
    if ($(cb).is(':checked')) {
        alert(1);
    } else {
        alert(2);
    }
}

我想calculateRow()用下面的语法调用函数

$("table.authors-list").on("change", 'input[name^="discount"]', function (event) {
    var cb = $(this).closest(input[name ^= "treated"]);
    calculateRow($(this).closest("tr"), cb);

});

我想将两个参数传递给calculateRow() rowis$(this).closest("tr")

因为cb我希望它是复选框字段。 var cb = $(this).closest(input[name^="treated"]);

因此在执行时,代码将检查名为X 是该行数的calculateRow()复选框的值。treatedX

我试图创建一个小提琴,但它显然不起作用。 http://jsfiddle.net/cmJu6/

所以基本上,在 first_name 输入中输入某些内容时,警报必须根据复选框是否被选中而触发。

提前致谢

4

1 回答 1

1

使用.siblings而不是closest获取兄弟输入-

$(this).siblings('input[name^="treated_"]');

另外,您的选择器是错误的--> $("table.authors-list")

它应该像$(".table\\.authors-list")

演示----> http://jsfiddle.net/cmJu6/2/

于 2013-06-27T14:59:08.160 回答