0

我有几个表,它们是动态填充的。在加载时,每个复选框都会被勾选,每个文本框的值都是 1。

我正在寻找一个要运行的 jQuery 脚本,如果未选中该复选框,那么它将用 0 替换文本框,如果再次选中它,它将用 1 替换零。

这是我到目前为止的代码:

$('#cb').click(function() {
if($(this).is(':not(:checked'))
$(\"#tx\").val('1');
else
$(\"#tx\").val('o');
});

有人可以帮忙吗?

4

4 回答 4

5

我想你想要这个:

无需更改 ID,也无需更改任何标记。

小提琴的确切解决方案:

$('input[type=checkbox]').click(function() {
    if(this.checked == true) {
        $(this).closest('td').next().find('input').val("1");

    } else {        
        $(this).closest('td').next().find('input').val("0");

    }
});

在这里演示

于 2013-05-22T15:50:03.610 回答
2

您可以将更改侦听器附加到更新相应文本框的每个复选框。诀窍是如何识别与复选框对应的文本框。您可以使用复选框 ID 的类或变体(请记住,ID 必须是唯一的):

$('input[type="checkbox"]').on('change', function() {
    var val = $(this).prop('checked') ? 1 : 0;
    var txtBoxId = $(this).attr('id') + '_txt'; //in this example, the ID of a textbox is the ID of the checkbox + '_txt'
    $("#" + txtBoxId ).val(val);
});

像往常一样使用 jQuery,确保它在你的ready函数中,否则它可能看起来不起作用。

于 2013-05-22T15:41:50.013 回答
1
$('#cb').click(function() {
    if($(this).is(':not(:checked)'))
        $("#tx").val('0');
    else
        $("#tx").val('1');
    });

这是您的代码,刚刚清理完毕。

  • 在“检查”后添加了一个缺少的括号
  • 删除了#tx 周围所有奇怪的转义 " 标记
  • 交换你的 0 和 1 以匹配你的规则

你的小提琴也有问题 - 你需要在左上角包含 jquery 库,正如评论者所说,你不能让每个东西都具有相同的 id。我给您的代码更改将使您的大部分内容正常工作,但挑战在于找出要更改的文本框。我这样做是通过在每个复选框上使用数据属性来说明要链接到的文本框的(唯一)ID。

查看我的工作小提琴:http: //jsfiddle.net/9NDuB/5/

于 2013-05-22T15:50:57.943 回答
0

关于什么

$('#cb').change(function() {
    this.checked ? $("#tx").val("1") : $("#tx").val("0");
});
于 2013-05-22T15:27:09.497 回答