0

1つの入力があり、独自のグリッドを使用します。入力の送信値に使用keypressします。[保存]ボタンをクリックして、キーを押すアクションを実行します。

例えば:

$('input[name="name"] , #save_button').live('keypress', function(event) {})

入力はクリックする必要がkeypressedあり#save_button、クリックする必要があります。このメソッドを使用して1つの関数を実行し、データベースに保存できますか?

私の英語でごめんなさい。

4

5 に答える 5

1

.live非推奨のものは使用せず、.on代わりに使用してください。これをしたら

 $('input[name="name"] , #save_button').on('keypress click', function() {
     // do something
 });

次に、ユーザーが入力をクリックすると、ユーザーが をクリックした//do something場合と同様に処理が行われます#save_button。また、ユーザーに入力をクリックして使用してもらいたい場合は、入力をクリックしても と同じことを行うべきではありません#save_button。したがって、これらは 2 つのリスナーに分離する必要があります。

 $('input[name="name"]').on('keyup', function(e){
        // do something for keyup (use keyup instead, its just better)
 });

 $('#save_button').on('click', function(){
       // do something for click
 });

両方のリスナーに同じことをさせたい場合

 function doSomething(){
     // do something for both
 }

 $('input[name="name"]').on('keyup', doSomething);

 $('#save_button').on('click', doSomething);

リスナーを「ライブ」にする必要がある場合は、ドキュメントから委任します

 function doSomething(){
     // do something for both
 }

 $(document).on('keyup', 'input[name="name"]', doSomething);

 $(document).on('click', '#save_button', doSomething);   

また、すべてのキー押下イベントでアクションを実行するのではなく、一部のキー (ENTER キーなど) のみを実行する必要があると仮定すると、これを確認することをお勧めします。

http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2013-03-13T18:08:26.810 に答える
0

名前付き関数を使用し、2 つの異なるイベントを使用します。

function myFnc function(event) {}

var doc = $(document);
doc.on("keypress", 'input[name="name"]', myFnc);
doc.on("click", "#save_button", myFnc);
于 2013-03-13T18:04:32.820 に答える
0

2 つの主なアプローチ:

  • 名前を付けてハンドラーの匿名化を解除し、両方の $(...).on(...) ステートメント ( ではない.live()) からアクセス可能な外部スコープに移動し、それらのステートメントに名前で添付します。
  • 現在行っているようにハンドラーをアタッチし、jQuerys.trigger()メソッドを使用して、「保存」ボタンにアタッチされた匿名のクリック ハンドラーからキープレス ハンドラーを呼び出します。

eventどちらの場合も、関数が他のイベント タイプからトリガーされたときにエラーが発生しないように、keypress ハンドラーに渡されるものが正しく形成されていることを確認するための対策を講じる必要があります。

于 2013-03-13T18:16:36.097 に答える
0

キーを押した後にのみデータを保存したいと思います

var isKeypressed = false;
$('input[name="name"]').on('keypress', function(event) {
isKeypressed   =true;

});

$('#save_button').on('click', function(){
 if(isKeypressed ){
   saveData(); 
 }else{
    // your message
}

});
于 2013-03-13T18:17:41.883 に答える
-1

live は推奨されていないため、最初に使用しないでください。jQuery 1.7 以降を使用している場合は、on. 例えば:

var handler = function(e) {
//Handle the event
};
$(document).on( "keypress", 'input[name="name"], #save_button', handler);
于 2013-03-13T18:05:22.850 に答える