Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome中的onblur onfocus无限循环问题_Javascript_Html_Google Chrome_Onblur_Onfocus - Fatal编程技术网

Javascript chrome中的onblur onfocus无限循环问题

Javascript chrome中的onblur onfocus无限循环问题,javascript,html,google-chrome,onblur,onfocus,Javascript,Html,Google Chrome,Onblur,Onfocus,javascript函数用于验证在OnBlur事件中调用的数字。如果该值无效,它将弹出警报并将焦点返回到字段 示例代码: <!DOCTYPE html> <html> <body> Enter your number: <input type="text" id="fname" onfocus="this.select()" onblur="myFunction(this)"> <script> function myFunctio

javascript函数用于验证在OnBlur事件中调用的数字。如果该值无效,它将弹出警报并将焦点返回到字段

示例代码:

<!DOCTYPE html>
<html>
<body>

Enter your number: <input type="text" id="fname" onfocus="this.select()" onblur="myFunction(this)">

<script>
function myFunction(field) {
    if( isNaN(field.value)){
    alert('wrong !!!');
    field.focus();
    return false;
    }
}
</script>

</body>
</html>

输入您的号码:
函数myFunction(字段){
if(isNaN(字段值)){
警惕(‘错误!!!’);
field.focus();
返回false;
}
}
在Internet Explorer 11(版本11.447.14393.0)/Windows 10中,验证工作正常

但在chrome中,单击“确定”或“关闭”警报按钮后,焦点不会返回到字段。警报再次弹出。因此,每次单击OK/Close(确定/关闭)都会无限地弹出警报

chrome版本是63.0.3239.132,这看起来像一个。也许你可以在这里提交/投票

您的需要可以通过一些变通方法来实现

  • 将字段值设置为
    空值
  • 函数myFunction(字段)
    {
    if(isNaN(字段值))
    {
    警惕(‘错误!!!’);
    字段。值=”;
    field.focus();
    返回false;
    }
    }

    输入您的号码:
    实现正确行为的更简洁的方法是在显示警报之前获取元素并调用其上的blur方法,现在您不必删除事件侦听器

    var inputField = document.getElementById("theIdForTheInputField");
    
    //remove focus
    inputField.blur();
    
    //display your alert
    alert("My Chrome browser doesn't get stuck anymore!");
    

    不太确定,但警报是否异步?这意味着在显示警报时,
    字段
    将获得焦点。如果单击
    警报
    字段
    将再次失去焦点!?这是可行的,但如果从现场转到任何其他应用程序并返回,问题仍然存在。单击10或15次后,警报弹出窗口关闭。您是指这两种情况吗?我尝试了Settimeout方法,因为我无法清除值并更新了答案。也许第三种方法会对你有所帮助。