-->

触发输入文本的jQuery的按键事件(Trigger the jQuery's keypre

2019-07-29 11:23发布

关于.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>

Answer 1:

你正在做的错误是你期待的jQuery的是什么trigger的方法来做。 如果检查出的代码 ,你会发现它是什么做的是实际执行的jQuery注册的事件处理没有 DOM Level 3的事件。 因为它只是执行的jQuery处理你不会引起change事件,这是你所需要的触发更新文本框的值属性。



Answer 2:

按文件

当相应的事件发生时附接有.bind()或它的快捷方式的方法之一任何事件处理程序被触发。

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

对你来说,这将是:

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


Answer 3:

可能过于简化的东西,但不能你只需改变.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例子



文章来源: Trigger the jQuery's keypress event on an input text