0

ページに入力フィールドがあり、ユーザーが[保存]ボタンを有効にするために何かを入力したことを検出します。Ctrl+ショートカットを有効Sにして、ユーザーが保存できるようにしました。データが保存されるたびに、[保存]ボタンは無効になります。

しかし、私にはジレンマがあります。ユーザーが入力フィールドのテキストを変更し、Ctrl+Sを実行してから、マウスを使用して別の入力フィールドに移動すると、ユーザーが変更した入力フィールドに対して「変更」イベントが発生し、これにより[保存]ボタンが取得されます。再び有効になりました。Ctrl+を実行した後は変更が行われていないため、[保存]ボタンを有効にしないでくださいS。表示されるのはchange、テキストの変更だけでなく、フォーカスが別のフィールドに移動したときにもイベントが発生することです。

$("input.SaveMe").live('keypress change', function ()
{
    // Code goes here to enable Save button
});

保存後に変更イベントが発生しないようにするにはどうすればよいですか。ある種の旗を使うことを考えましたが、どうすればいいのかわかりません。

4

2 に答える 2

2

特定の入力がフォーカスされていない場合、次の方法でイベントを無視できます。

$("input.SaveMe").live('keypress change', function() {
    if (!$(document.activeElement).id == 'id_of_input') return; //if (!$(document.activeElement).hasClass('SaveMe')) return;
    // Code goes here to enable Save button
});
于 2012-07-19T12:40:41.027 に答える
-1

「変更」の検出を削除すると問題は解決しますが、これにより、ユーザーがテキストをフィールドに貼り付けて、貼り付けを変更として検出できなくなります。その使用を修正するには:

$(document).bind('paste', function (e)
{
  // Add code to update flag to indicate data changes and enable the Save button.
});
于 2012-07-19T13:37:13.097 に答える