在输入文本上触发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示例