jQuery 焦点似乎导致 Internet Explorer 9 执行两次。这个问题在旧版本的 IE 中不会发生,在 Firefox 或 Chrome 中也不会发生。
我让用户在输入字段中输入代码。在输入或提交时,代码通过负载发送到另一个脚本(ajax)。输入字段中的代码被删除,焦点被带回。
该脚本的结果被插入到同一页面上的一个 div 中。
$(document).ready(function(){
$('#code').keyup(function(e){
if(e.keyCode == 13){
console.log('Code submitted through enter');
sendcode($('#code').val());
}
});
function sendcode(b){
console.log('function sendcode used');
$('#Result').load('scan.php?code=' + b);
$('#code').val('');
$('#code').focus();
};
$('#Submit').click(function(){
console.log('Code submitted through click');
sendcode($('#code').val());
});
});
但是, focus() 似乎是问题所在,因为当我删除它时,问题就消失了。我尝试将 focus() 放在代码的任何位置,但没有成功。是否有任何替代 focus() 的方法可以实现相同的效果,或者可以以某种方式修复?
NETWORK:
URL: /scan.php?code=stackoverflow
URL: /scan.php?code=
CONSOLE: (when hit enter)
Log: Code submitted through click
Log: function sendcode used
Log: Code submitted through enter
Log: function sendcode used
您可以看到第二个负载也没有携带代码变量。