2012-03-15 5 views
2

ユーザーがテキストボックスに入力したときに1つのテキストボックスがあり、値を警告する必要があります。また、ユーザーが値を変更した場合は警告も表示されます。したがって、2つのイベントがキーを押して変更されます。そして私はこれを最小限のコードで呼びたいと思います。重複コードはありません。ヒット時のイベントを入力して変更する

$('#txt').keydown(function (e){ 
    if(e.keyCode == 13){ 
     alert('you pressed enter ^_^'); 
    } 
})​ 

Online Demo

+2

あなたの問題は何ですか?あなたがすでにそこに着いているようです。 –

+0

@Felixキー押下と変更の両方のイベントが必要です。ユーザーの変更値と同様に外部にクリックすると警告が表示されます。 – Wazdesign

+0

次に、http://api.jquery.com/bind/を使用してください。 –

答えて

6

あなたは、最初のパラメータ(それでも各イベントを処理する必要がありますが)として、複数のイベントを一覧表示することができますのOTSフィドルjQの1.5を使用していますので、私は、意図的にバインドを使用してい

$('#txt').bind('keypress change', function (e){ 
    if(e.type === 'change' || e.keyCode == 13) { 
     alert('you pressed enter ^_^'); 
    } 
})​;​ 

0.2

+0

を使用してください。これは本当に必要なものです – Wazdesign

1

このような何か?

$('#txt') 
    .keydown(function (e) { 
     if(e.keyCode == 13){ 
      alert('you pressed enter ^_^'); 
     } 
    }) 
    .change(function(e) { 
     alert('you changed the text ^_-'); 
    }); 
1

liveアプローチを試してみてください:

$("#txt").live({ 
    change: function(e) { 
     alert('you changed the value'); 
    }, 
    keydown: function(e) { 
     if (e.keyCode == 13) { 
      alert('you pressed enter ^_^'); 
     } 
    } 
}); 

http://jsfiddle.net/tThq5/1/

3

これは私がこの問題に近づく方法です。

http://jsfiddle.net/tThq5/3/

注:私は、私は取得しない偽を返す$ .live()(V.1.3)ではなく$ .on()(V1.7)を使用してもよ1つ以上のイベントが発生しました。

$('#txt').live('keypress change', function(e) { 
    if (e.type === 'keypress' && e.keyCode == 13) { 
     alert('you pressed enter'); 
     return false; 
    } else if (e.type === 'change') { 
     alert('you made a change'); 
     return false; 
    } 
});​ 
関連する問題