2016-04-06 5 views
1

私はそうのように、特定のフォームフィールドが移入された場合にのみアンカーにイベントハンドラを追加しようとしていますが発射されるようにします最初のイベントのように、私は入力したキーと同じテーブル内の行数で終わるので、2番目のイベントに伝播しています。割り当てクリックイベントハンドラはクリックイベントが複数回

ノー成功を収めて

e.stopPropagation(); 

しかしを追加しようとしました。

+0

あなたの問題は、その 'IF($(「#のNEWNAME」)だろう.val()|| $( '#newFrom').val()){'は何もチェックしていませんか? – Hawkeye

+0

これは、それらのIDを持つフォームフィールドの空でない文字列をチェックしていますか?そのビットはうまくいくようです。 – saml

+0

よろしいですか?私はこれまでに使われているものを見たことがなかった。 – Hawkeye

答えて

1

$('this').off();はおそらく、あなたがより良い代わりにkeyupinputイベントを使用して行くと思いも$(this).off();
でなければなりません。 inputイベントはコンテンツがフィールドに貼り付けられてもトリガーされます。

をすべてのkeyupあなたがボタンに新しい(したがって複数)clickイベント/秒を割り当てた上で:間違っていた何

// (cache your selectors) 
var $newName = $("#newName"), 
    $newFrom = $("#newFrom"); 

// create a boolean flag 
var haveNewValue = false; 

// modify that flag on fields `input` 
$newName.add($newFrom).on("input", function() { 
    haveNewValue = ($.trim($newName.val()) + $.trim($newFrom.val())).length > 0; 
}); 

// than inside the click test your flag 
$('#add-person').click(function (e) { 
    if(!haveNewValue) return; // exit function if no entered value. 

    // do stuff like adding row to table 
}); 

にもかかわらず、私は周りに他の道を行くだろう(が修正された:$(this).off()が、実際のボタンをクリックした後にのみトリガーされました。また

.on()off.()を使用するためのより良い方法は、(.click()法と.on()方法を使用しての違いに注意してください)です。

function doCoffee() { 
    alert("Bzzzzzzzz...BLURGGUZRGUZRGUZRG"); 
} 

$("#doCoffeeButton").on("click", doCoffee); // Register "event" using .on() 

$("#bossAlertButton").click(function() { 
    $("#doCoffeeButton").off("click");  // Turn off "event" using .off() 
}); 
+0

これは動作します!私は何をしていたのか、なぜこれを(引用符 - dohなしで)変更して入力しても、うまくいきませんでした。 – saml

+1

@Samは私の答えを広げた;) –

+0

何が起こったのかよくわからない。説明ありがとう!! – saml

関連する問題