我已经尝试了好几天了。我已阅读了大量其他类似的问题,但没有任何帮助我。我想要做的是模拟确切的事件,例如用户可以制作的有机按键到文本输入字段。因此,它会设置"值"对新值的输入,与真正的按键完全一样。 它至少需要在1个浏览器上工作,无论是Chrome,Mozzila还是IE,它都无所谓。 我需要在输入中逐个字母地键入,但如果它适用于1个字母,那么它肯定适用于其中几个。
请注意:它无法设置输入值。只有人工按键事件可以帮助我。
答案 0 :(得分:1)
您可以使用应用程序与浏览器进行交互或控制。使用像http://www.seleniumhq.org/这样的库可以提供帮助。
这是从Definitive way to trigger keypress events with jQuery
触发按键事件的代码var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);
你确定设定值对你不起作用吗?如果将值设置为它的值加上新的char,该怎么办?这里包含一个可运行的示例。
function typeLetter( letter ) {
$( '#input' ).val( $( '#input' ).val() + letter );
}
typeLetter( 'a' );
setTimeout( function() { typeLetter( 'b' ); }, 500 );
setTimeout( function() { typeLetter( 'c' ); }, 1000 );
setTimeout( function() { typeLetter( 'd' ); }, 1500 );
setTimeout( function() { typeLetter( 'e' ); }, 2000 );
setTimeout( function() { typeLetter( 'f' ); }, 2500 );
setTimeout( function() { typeLetter( 'g' ); }, 3000 );

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="input" >
&#13;
答案 1 :(得分:0)
可以一次添加一个字符的值,并使用charCodeAt()
为每个字符获取密钥代码,以传递给您随后触发的新事件
let str = 'a new value';
$('input').on('keypress', function(e) {
console.log(e.type + ', which=' + e.which)
})
str.split('').forEach((s, i) => {
(function(s, i) {
const evt = jQuery.Event("keypress");
evt.which = str.charCodeAt(i);
setTimeout(function() {
jQuery('input').val(function(_, oVal) {
return oVal + s;
}).trigger(evt);
}, 200 * i) //long delay for demo purpose
})(s, i)
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input>
&#13;
如果需要,删除val()调用,只触发事件