关于.trigger()
方法 ,该Event
对象时, which
财产时, JS焦炭代码和下面的代码,为什么用#example
输入没有得到字符a
作为自动写入值? 我误解了.trigger()
方法?
<input type="text" name="example" id="example" value="" />
<script>
$(function() {
var e = jQuery.Event("keydown", { which: 65 });
$("#example").focus().trigger(e);
});
</script>
你正在做的错误是你期待的jQuery的是什么trigger
的方法来做。 如果检查出的代码 ,你会发现它是什么做的是实际执行的jQuery注册的事件处理没有 DOM Level 3的事件。 因为它只是执行的jQuery处理你不会引起change
事件,这是你所需要的触发更新文本框的值属性。
按文件
当相应的事件发生时附接有.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
间隔变量将迭代通过所有的索引autoText
阵列和用于每次迭代,将追加一个字符输入字段。
这会给你更多的自动打字的感觉...
这里是一个工作的jsfiddle例子