我想知道焦点事件是以程序方式还是由人类触发?
我正在写剧本的一部分
jQuery( document ).on( 'focus', '#song_artist_focus', function(event) {
if(event.originalEvent === undefined ){
alert('I am not human');
return;}
alert('I am human') ;
});
当我像这样编程这个脚本时
jQuery('#song_artist_focus').focus();
它仍然表明事件是由人类触发的。请帮帮忙?
我查看了此解决方案Check if event is triggered by a human。但不适用于焦点事件。
答案 0 :(得分:2)
您的问题是focus
事件没有冒泡
jQuery用一点魔法修复它使其更像其他事件,但它仍然不像自然气泡的事件那样工作。
要解决此问题,请使用focusin
事件,因为它会冒泡,并执行.trigger('focusin')
jQuery(document).on('focusin', '#song_artist_focus', function(event) {
if (event.originalEvent === undefined) {
console.log('I am not human');
} else {
console.log('I am human');
}
});
jQuery('#song_artist_focus').trigger('focusin');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="song_artist_focus">
答案 1 :(得分:1)
Html:
<input type='text' id='try' >try
<button id='click'>Click</button>
jQuery:
$("#try").focus(function(event) {
if (event.originalEvent === undefined) {
console.log('not human')
} else {
console.log(' human');
}
});
$('#click').click(function(event) {
jQuery('#try').focus();
});
尝试一下,你会得到预期的结果。