关于.trigger()
method,Event
object,which
property,JS char codes以及下面的代码,为什么#example
输入无法获得char a
为自动编写的值?我误解了.trigger()
方法吗?
<input type="text" name="example" id="example" value="" />
<script>
$(function() {
var e = jQuery.Event("keydown", { which: 65 });
$("#example").focus().trigger(e);
});
</script>
答案 0 :(得分:5)
您所犯的错误就是您期望使用jQuery的trigger
方法。如果您查看code,您将看到它正在执行的是实际执行jQuery注册的事件处理程序而不是 DOM Level 3事件。因为它只执行jQuery处理程序,所以你不会导致change
事件,这是你需要触发来更新文本框的value属性。
答案 1 :(得分:0)
当相应的事件发生时,会触发附加.bind()或其快捷方法之一的事件处理程序。
$('#foo').bind('click', function() {
alert($(this).text());
});
$('#foo').trigger('click');
在你的情况下,它将是:
$('#example').bind('keydown', function(e) {
alert("Pressed: " + e.keycode());
});
$('#example').focus().trigger('click');
答案 2 :(得分:0)
可能过度简化了事情,但是你不能简单地改变输入字段的.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
数组的所有索引,并且对于每次迭代,它将在输入字段中附加一个字符。
这会给你更多的自动输入感觉......