keydown事件上的jQuery trigger()和stopPropagation()

Jay*_*zzi 6 jquery jquery-ui keydown preventdefault stoppropagation

我在keydown和停止传播时遇到了困难

我不希望我的页面刷新,我已经尝试了我能想到的每一种方式,我目前的代码是

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

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

 });
 </script>
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?我认为事件被正确调用,我有正确链接的jquery和jquery ui并且没有收到控制台错误

更新 很好它正在工作,现在我正在获取对象函数的属性'事件'(a,b){return new e.fn.init(a,b,h)}不是下面代码的函数错误

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

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

 });
Run Code Online (Sandbox Code Playgroud)

更新#2 - 修复

我学到的东西

  1. 文件中不需要trigger()(准备好)
  2. 让$ .ui.keyCode工作很困难(至少对我而言)
  3. 总是看到其他功能附加到输入(onblur,onfocus,ect)aka doh

把它改写成这个,工作得非常好

 $(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;
 }
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*oli 9

停止默认操作的代码必须转到事件适用的元素.

$('#id_number').keydown(function(event){
  event.preventDefault();
  event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

.trigger()第二个参数是用于extraParameters