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" });
});

クリックで 1 回実行される場合もあれば、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 に答える