2016-09-20 12 views
1

入力フィールドがnumberタイプで、対応する属性がvalidateの値がcheckitの場合にのみ、検証を実行します。私は以下のコードで言及されているkeypressイベント$('*** input[type=number]').bindにこれを束縛するためにastrixの代わりに何を渡すべきかわかりません。私はここで立ち往生しています。Jquery:属性値に基づいて入力タイプ '番号'にキー入力イベントをバインドする方法

$('input[type="number"]').bind('keypress', function(e) { 
    if($(this).prop('validate') == 'checkit') 
    { 
     // do here 
    } 
}); 

それとも、例えば、自分のinput[type='number']にクラスを割り当てる.input-numしてから作成することができます:あなたはこのようなあなたの コードを作るあなたのイベントハンドラ、内部の状態を追加することができますいずれか

<input type="number" validate="checkit"> 

$('input[type=number]').bind('keypress', function(e) { 
    //do things here 
}); 
+1

$( 'input [type = number] [validate = "checkit"]')。bind( 'keypress' ..... ' – Satpal

+1

この問題はセレクタではないため解決できません( 'form')。on( 'keypress'、 '' input [type = number] [validate = "checkit"]]要素の選択時に、 ''、function(e){}); – cezarypiatek

+0

@cezarあなたのコメントのypiatekありがとう.bindは、同じセレクタに一致する動的に追加された要素に対しては機能しません... http://elijahmanor.com/differences-between-jquery-bind-vs-live-vs-delegate-vs- on/hereでは、 ".onメソッドはAPIに多くの一貫性をもたらし、うまくいけば、やや混乱させないようにしています。" – yeppe

答えて

1

はこれを試してみてください追加入力[タイプ=「数」]にクラスを追加する必要があります:

$('input[type=number][validate=checkit]').bind('keypress', function(e) { 
    //do things here 
}); 
+0

このサイトによると、http://elijahmanor.com/differences-between-jquery-bind-vs-live-vs-delegate-vs-on/ .onはより良い.... $( 'input [type = number ] [validate = checkit] ')。(' keypress '、function(e){ //ここで行うこと }); – yeppe

+0

はい、あなたのコードをコピーしました。 – jcubic

1

このようなイベントリスナー:

$('.input-num[validate="checkit"]').bind('keypress', function(e) { 
     // do things here 
    }); 

最初の解決策は、入力の数に基づいてメモリオーバーヘッドを追加しますそれらの多くは)イベントはすべてのイベントに関連付けられているため、コードは追加した条件に基づいて入力を除外します。

第2の解決策は、しかし、パフォーマンスとメモリの面で優れているが、それはいくつかの時間オーバーヘッド

+0

私はすでに回答を更新しています。 –

関連する問題