1

关于.trigger()方法Event对象which属性JS char 代码和下面的代码,为什么#example输入没有得到 chara作为自动写入的值?我误解了.trigger()方法吗?

<input type="text" name="example" id="example" value="" />

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

3 回答 3

5

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

于 2012-05-21T12:55:14.140 回答
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');
于 2012-05-21T13:01:56.033 回答
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间隔变量将遍历数组的所有索引,并且autoText对于每次迭代,它将一个字符附加到输入字段。

这会给你更多的自动打字感觉......

这是一个有效的 jsFiddle 示例

于 2012-05-21T13:08:04.283 回答