我在验证文本框的值是否已经在数据库中可用。在下面的代码中,它也可以正常工作,并且还显示警报消息(Notification ID Already Available)。但是如果我在警报框中单击确定,则鼠标光标将移至第二个文本框。在警报框中的确定按钮上。有什么建议么。
请在下面找到代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
function checkValid(){
    var flg="Y";
    $.getJSON( "dynamic_content_values1.json", function( data ){
        var textVal=$("#character_validation").val();
        $.each( data, function( key, val ) {
            if(textVal===val.notificationID){
                flg="N";return false;
            }
        });
        if(flg==="N"){
             alert("Notification ID Already Available!");
             //$("#character_validation").focus('');
        }
        else{
            alert("Notification ID Available");
        }
    return false;
    });
}
</script>
</head>
<body>
<form method="post">
<input type="text" id="character_validation" onblur="checkValid();" maxlength="10" onkeyup="this.value = this.value.replace(/[^a-zA-Z0-9-]/g, '')">
<br>
<input type="text">
<!-- <input type="submit" name="submit" value="Submit" onclick="checkValid();">-->
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>

最佳答案

您必须在警报声明后使用它,

setTimeout(function(){$("#character_validation").focus('');}, 1);


我在JAVASCRIPT中尝试过

function IsUserExist(txtcontrol) { //txtcontrol means this
  if(txtcontrol.value == "2") {
    alert("User Exist");
    setTimeout(function() {
      document.getElementById('txtUserName').focus();
    }, 0);
    return false;
  }
}

10-07 22:43