1

我正在尝试做一些我认为非常简单的事情。我想设置一个独立的复选框,选中该复选框后,会将数据库中的字段切换为“1”。未选中时,它将该标志切换回 0。我已将帖子侧设置得很好,但是单击时,我最终会多次发生帖子。

<input name="trackdefect" value="1" type="checkbox" id="trackdefect"><label for="defect">Factory Defect</label>

还有我的 javascript:

$("input[name=trackdefect]:checked").live('click', function(e) {
   $.post("save.php", { id:"trackdefect",value:"1" });
});

$("input[name=trackdefect]:not(:checked)").live('click', function(e) {
   $.post("save.php", { id:"trackdefect",value:"0" });
});

有时它会在点击时运行一次,有时会运行 3 次,有时会运行 4 次或 5 次。我不确定为什么。当我在小提琴中使用几乎相同的代码时,它工作正常,没有倍数:http: //jsfiddle.net/suQfA/4/

(当然,我想出了一个解决方法,检查切换是否与已有的相同,因此它不会发布或记录任何内容,但这是一个杂乱无章的问题。)

4

2 回答 2

1

你只需要绑定一次

$("input[name=trackdefect]").change(function(){
    var val = this.checked ? 1 : 0;
    $.post("save.php", { id:"trackdefect",value: val });
});
于 2013-02-27T21:54:34.510 回答
0

尝试使用change事件而不是click复选框上的事件。

http://jsfiddle.net/suQfA/5/

于 2013-02-27T21:51:14.410 回答