我正在尝试做一些我认为非常简单的事情。我想设置一个独立的复选框,选中该复选框后,将数据库中的字段切换为“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" });
});
有时它会在点击时运行一次,有时三次,有时四次或五次。我不知道为什么。当我在小提琴中使用相同的相同代码时它工作正常,没有倍数:http://jsfiddle.net/suQfA/4/
(当然,我想出了一个方法,检查切换是否与已经存在的切换相同,所以它不会发布或记录任何内容,但这是一个kludge。)
答案 0 :(得分:1)
你只需要绑定一次
$("input[name=trackdefect]").change(function(){
var val = this.checked ? 1 : 0;
$.post("save.php", { id:"trackdefect",value: val });
});
答案 1 :(得分:0)
尝试使用change
事件代替复选框上的click
事件。