2017-05-27 23 views
0

私はフォームを持っています。ここでユーザーがESCを押すと、フォームが閉じられます。フィールドが変更されるたびに、私はonchangeイベントに基づいて値を保存するコードを実行します。したがって、通常、ESCキーがヒットする前に、すべてのフィールドがコミットされています。入力フィールドが編集モードにあるかどうかを確認します

ただし、ユーザーがフィールド内をクリックして値を変更するが、タブまたはヒットしない場合は、オンチェンジは起動しません。したがって、変更はコミットされません。

フィールドが編集状態の間、ESCキーを押したときに次のコードは実行されません。

フィールドがまだ編集モードの間にESCキーの機能を変更する方法はありますか?

$(document).keyup(function (e) { 
    if (e.keyCode == 27) { 
     // this assumes all of the fields have been committed. 
     $('#dialog-form').dialog('destroy').html(''); 
    } 
} 
+0

コードの最後に右括弧がありません。 – ElectroBit

答えて

0

フォームの編集中にESCの動作を変更したい場合は、文書に耳を傾けるならば、あなたはどこからでもキー操作を検出することができることを考えます。あなたのフォームだけを聴くと、そのフォームの中からキーの押下が検出されます。あなたの他の問題については

<form id="foo"> 
<input type="text" /> 
</form> 

<script> 

$("#foo").keyup(function (e) { 
    if (e.keyCode == 27) { 
     // This code will run if you press escape while editing the form. 
    } 
}) 

$(document).keyup(function (e) { 
    if (e.keyCode == 27) { 
     // This code will run if you press escape from anywhere. 
    } 
}) 

</script> 

、私は要素が.dialog()メソッドを持っていないと思います。

関連する問題