jQuery、同じ機能を3つの異なるテキストボックスのキーアップイベントにバインドします

StackOverflow https://stackoverflow.com/questions/1138029

質問

3つのテキストボックスがあります keyup 3つすべてのイベント、同じ関数を呼び出したいですか?

以下のコードでは、私はバインドしようとしています keyup イベントへ CalculateTotalOnKeyUpEvent 名前のテキストボックスに関数 compensation, 、しかし、それは機能しません:

$("#compensation").bind("keyup", CalculateTotalOnKeyUpEvent(keyupEvent));

function CalculateTotalOnKeyUpEvent(keyupEvent) {
  var keyCode = keyupEvent.keyCode;
  if (KeyStrokeAllowdToCalculateRefund(keyCode)) {
    CalculateTotalRefund();
  }
};
役に立ちましたか?

解決

あなたはこのようにする必要があります:

// Edit according to request in the comment: 
// in order to select more than one element,
// you need to specify comma separated ids.
// Also, maybe you need to consider to use a CSS class for the selected elements,
// then it could be just $(".className")
$("#element1, #element2, ....").bind("keyup", CalculateTotalOnKeyUpEvent);

関数をパラメーターとして渡す必要があります。宣言された機能を渡す必要はありません。

他のヒント

$("#txt1, #txt2, #txt3").keyup(fn);

または、3つのテキストボックスをすべて同じクラスに与えるだけで、あなたは行くのがいいですか

$("#compensation").bind("keyup",CalculateTotalOnKeyUpEvent(keyupEvent));

calculatetotalonkeyUpevent(keyUpevent)[関数名の後に()に注意]を記述すると、calculatetotalonkeypeventを実行し、関数の結果をキーアップイベントに割り当てます。

あなたはようなことをするべきです、

$('#compensation, #otherId1, #otherId2')
    .bind('keyup', CalculateTotalOnKeyUpEvent);

ここで、 'otherid1'と 'otherid2'はさらに2つのテキストボックスのIDです。

あなたは呼んでいます CalculateTotalOnKeyUpEvent すぐに、それを議論として渡さないでください。これを試して:

$("#compensation").bind("keyup",CalculateTotalOnKeyUpEvent);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top