0

セルをクリックするとセルが編集可能になるテーブルがあります。セルの内容を変更する場合、AJAX リクエストを実行してデータをデータベースに保存したいのは、次の場合のみです。

  1. セルの外に焦点を当てる
  2. エンターキーを押します

問題は、「Enter」を押すとイベントが2回実行され、セルからフォーカスアウトすると1回実行されることです。そして、私はその理由を知っていると思います.enter keypressはフォーカスアウトとしても修飾されます. これはコードです:

$(document).on('focusout keypress', '.row_data', function(event){..}

イベント内でそれを制限しようとしました:

if ( (event.type === "keypress" && event.which === 13) || (event.type === "focusout" && event.which !== 13) ) {...}

残念ながら、それはうまくいきません。

なぜこれが失敗しているのか分かりますか?どうすればそれを機能させることができますか?

前もって感謝します!

4

3 に答える 3

0

コールバック関数に追加event.stopPropagation();してから、フォーカスアウトのみをリッスンしてみてください

$('td').on('focusout', '.row_data', function(event){
    event.stopPropagation();
}
于 2018-01-04T08:56:26.117 に答える