6

キーダウンと伝播の停止に苦労しています

私は私のページを更新したくありません、私は私が考えることができるすべての方法を試しました、私の現在のコードは

 <script>
 $(document).ready(function() {
 var e = jQuery.event( 'keydown', { which: $.ui.keyCode.ENTER } );

 $('#id_number').trigger(e, function(event){
event.preventDefault();
event.stopPropagation();
});

 });
 </script>

私がここで間違っていることについて何か考えはありますか?イベントが正しく呼び出されたと思いました。jqueryとjqueryuiが正しくリンクされており、コンソールエラーは発生しません。

UPDATE は正常に機能していましたが、オブジェクト関数(​​a、b){return new e.fn.init(a、b、h)}のプロパティ'event'を取得しても、以下のコードでは関数エラーではありません。

 $(document).ready(function() {
 var e = jQuery.event( 'keydown', { which: $.ui.keyCode.ENTER } , function(event){
  event.preventDefault();
  event.stopPropagation();
}); 

 $('#id_number').trigger(e);

 });

更新#2-修正

私が学んだこと

  1. ドキュメントにtrigger()は必要ありません(ready)
  2. $ .ui.keyCodeを機能させるのは困難でした(少なくとも私にとっては)
  3. 入力に接続されている他の関数(onblur、onfocus、ect)を常に確認してください。

これに書き直し、完全に正常に動作します

 $(document).ready(function() {
    $('#id_number').keydown(OnKeyDown);
 });    

function OnKeyDown(e){
var code = (e.keyCode ? e.keyCode : e.which); //to support both methods
if(code == 13) { //the Enter keycode

    //my actions
 return false;
 }
}
4

1 に答える 1

9

デフォルト アクションを停止するコードは、イベントが適用される要素に移動する必要があります。

$('#id_number').keydown(function(event){
  event.preventDefault();
  event.stopPropagation();
});

2.trigger()番目の引数はextraParameters

于 2012-10-04T15:32:13.110 に答える