2017-01-07 7 views
0

すべてinput[type="text"]フィールドの入力を検出するこのコード行は$('#tbl-purchase-list').on('keyup change', 'input[type="text"]'です。しかし、キーボードにテキストを入力したり、変更したりするときに検出したくない入力フィールドがあります。 <input type="text" class="form-control purchase-freight-charge" id="purchase-freight-charge" value="" />。特定の要素の特定のイベントを無視する方法はありますか?このようなもの$("#purchase-freight-charge").ignoreEvents();?助けてください。どうもありがとう。特定のhtml要素のjavascriptイベントを検出/無視する方法はありますか?

+0

可能な重複[jQueryの単一のフィールド上のルールの検証を無効にする](http://stackoverflow.com/questions/2853416/jquery-disable-rule-validation単独フィールド) – Paul

+3

[':not()'](https://api.jquery.com/not-selector/)セレクタ。 –

答えて

2

勿論:not()擬似セレクタがあります。

$('#tbl-purchase-list').on('keyup change', 
          'input[type="text"]:not(#purchase-freight-charge)', 
          ...); 

それは、セレクタの一致したセットの中のターゲット要素を追加しません。したがって、その要素には、:not()のイベントはありません。これも行うことができます

イベント:

$('#tbl-purchase-list').on('keyup change', 'input[type="text"]',function(ev){ 
    if(this.id === "purchase-freight-charge"){ 
     this.value = ""; 
    } 
}); 
+0

event.stopImmediatePropagation();でのこのアプローチの利点は何ですか? – Eli

+0

セレクタで別のイベントをバインドする必要があります。ここでは、単一の場所で作業するだけです。もう1つ、更新することができます。 – Jai

1

あなたはjQueryのevent.stopImmediatePropagation()を使用することができます。

$("#purchase-freight-charge").on('keyup change', function(event) { 
    event.stopImmediatePropagation(); 
}); 

// Future event bindings won't be executed for #purchase-freight-charge 
// ... 
関連する問題