使用表单元素上的jQuery模拟按键

时间:2011-10-21 12:52:11

标签: javascript jquery javascript-events keypress

我正在尝试使用以下代码模拟按键...

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上的其他帖子中获取此代码,但它不起作用。谁知道为什么?

更新

修正了......它似乎触发“按键”不会自动触发“键盘”

2 个答案:

答案 0 :(得分:2)

通常,当用户向inout字段添加内容时,会发生以下事件:

  1. keydown (一次)。
  2. keypress (至少一次,按下按键时会发生其他事件)
  3. keyup (一次)
  4. 模拟关键事件时,不必按此顺序发生所有事件。手动调度该事件,因此不会激活正常的事件链。

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

答案 1 :(得分: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 );
});