在输入文本上触发jQuery的keypress事件

关于.trigger()方法 , Event对象 , which属性 , JS char代码和下面的代码,为什么#example输入不能将char作为自动写入的值? 我是否误解了.trigger()方法?

   $(function() { var e = jQuery.Event("keydown", { which: 65 }); $("#example").focus().trigger(e); });  

你正在犯的错误是你期望jQuery的trigger方法。 如果您查看代码,您将看到它正在执行的是实际执行jQuery注册事件处理程序而不是 DOM Level 3事件。 因为它只执行jQuery处理程序,所以您不会导致change事件,这是您需要触发更新文本框的value属性的事件。

根据文件

当相应的事件发生时,将触发附加.bind()或其快捷方法之一的任何事件处理程序。

 $('#foo').bind('click', function() { alert($(this).text()); }); $('#foo').trigger('click'); 

在你的情况下,它将是:

 $('#example').bind('keydown', function(e) { alert("Pressed: " + e.keycode()); }); $('#example').focus().trigger('click'); 

可能过度简化了事情,但是你不能简单地改变输入字段的.val() (值)来模拟auto-written values吗?

你可以简单地设置这样的值 –

 $("#example").val('Some auto-written value'); 

你可以做一些像这样的视觉效果 –

 var autoText = ['f','o','o','b','a','r']; var characterIndex = 0; var autoType = setInterval(function(){ $("#example").val( $("#example").val() + autoText[characterIndex] ); characterIndex++; if (characterIndex >= autoText.length){ clearInterval(autoType); } },_keystroke_interval); 

_keystroke_interval是自动键入字符之间的间隔(以毫秒为单位)。 autoType interval变量将遍历autoText数组的所有索引,并且对于每次迭代,它将向输入字段追加一个字符。

这将给你更多的自动打字感觉……

这是一个有效的jsFiddle示例