用jQuery模拟表单元素的按键

问题描述 投票:2回答:2

我想用下面的代码模拟一个按键......

jQuery('input[name=renameCustomForm]').live('keyup', function (e) {
      console.log('pressed');
});
jQuery('body').click(function (e) {
        console.log(jQuery('input[name=renameCustomForm]'));
        var press = jQuery.Event("keypress");
        press.which = 13;
        jQuery('input[name=renameCustomForm]').trigger(press);
 });

我从SO上的其他帖子中得到了这段代码,但它不工作。 有人知道为什么吗?

更新

修正了......似乎触发 "按键 "不会自动触发 "按键"。

javascript jquery keypress jquery-events
2个回答
2
投票

通常情况下,当用户在inout字段中添加东西时,会发生以下事件。

  1. keydown (一次)。
  2. keypress (至少一次,当键被按下时,额外的事件会发生)
  3. keyup (一次)

当模拟一个关键事件时,不需要所有事件都按这个顺序发生。事件是手动派发的,所以正常的事件链不会被激活。

因此,如果您手动触发了 keypress 事件,该 keyup 事件不会被触发。


0
投票

你的代码会触发一个 keypress 每次你点击页面上的任何地方时...

对于您的情况来说,最好是使用 .blur() 输入框的事件...

jQuery('input[name=renameCustomForm]').live('keyup', function (e) {
      console.log('pressed');
}).live('blur', function(){
      var self = $(this);
      console.log( self );
      var press = jQuery.Event("keyup");
      press.which = 13;
      self.trigger( press );
});
© www.soinside.com 2019 - 2024. All rights reserved.