【问题标题】:jQuery keypress event trigger not working on page loadjQuery按键事件触发器在页面加载时不起作用
【发布时间】:2017-03-27 23:52:23
【问题描述】:

我正在尝试在页面加载时模拟输入按键,但它似乎不起作用。只有当我单击输入并按 Enter 时,我才会发现成功。我希望在页面加载时看到警报。

如果您更改我在下面列出的顺序,它会提供警报,但按下的键未定义。

我在这里出错的任何想法?

在此处查看演示 - http://jsfiddle.net/3xTM2/1321/

HTML

<input id="test" type="text" />

Javascript

$('#test').trigger(jQuery.Event('keypress', { keycode: 13 }));    
$('#test').keypress(function(e) {
  alert(e.keyCode);
});

【问题讨论】:

  • 这是一个重复的问题...请参阅此答案:stackoverflow.com/a/832121/2159528
  • 您在定义事件之前触发了它。只需更改顺序即可。
  • @Ibu 如果您更改订单,则会提供警报,但按下的键未定义。
  • 你的小提琴正在使用 jQuery 1.4.2 并且文档说:As of jQuery 1.6, you can also pass an object to jQuery.Event() and its properties will be set on the newly created Event object.

标签: javascript jquery html


【解决方案1】:

正如评论中提到的,只需更改顺序并将keycode更改为keyCode,如下所示。

注意:请注意Code中的大写而不是code中的小写

$('#test').keypress(function(e) {
  alert(e.keyCode);
});



$('#test').trigger(jQuery.Event('keypress', { keyCode: 13 }));    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="test" type="text" />

【讨论】:

    【解决方案2】:

    您必须颠倒顺序,并将数据分配给您的 jQuery 版本上的事件对象:

    $('#test').keypress(function(e) {
      alert(e.keyCode);
    });
    
    var event = jQuery.Event('keypress');
    event.keyCode = 13;
    $('#test').trigger(event);   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多