Javascript验证警报多次触发

时间:2017-04-05 05:34:57

标签: javascript jquery asp.net

我有一个场景,我想检查一些regex并在正则表达式失败时触发alert消息。

所发生的情况是,在点击“确定”后触发警报时,它会再次触发相同的警报。

以下是代码: -

function validateSAPID() {
        var regex = /^[a-zA-Z0-9-]+$/m;
        var strSAP = document.getElementById('txtSearchSAP').value;
        if (strSAP.match(regex)) {
            return true;
        }
        else {
            alert("Please enter proper SAP ID");
            $('#txtSearchSAP').focus();
            $('#txtSearchSAP').val('');
            return false;
        }
    }

textbox HTML如下: -

<input type="text" id="txtSearchSAP" onkeyup='FilterGrid(this);' onblur="validateSAPID();" class="field-style field-full align-none" maxlength="18" />

2 个答案:

答案 0 :(得分:0)

尝试调用validateSAPID();在FilterGrid里面(这个); onkeyup事件

答案 1 :(得分:0)

(我知道我的语法不好,所以可以自由编辑)

我做了一些测试,似乎$("#txtSearchSAP").focus();先发生然后被触发alert("Please enter proper SAP ID");导致失去焦点并再次运行该功能。

我不确定这是否是最有效的方法,但这是我得到的解决方案:

   <body >
      <input type="text" id="txtSearchSAP"    class="field-style field-full align-none" maxlength="18" />
   </body>
   <script>
      $(document).ready(function(){
            $("#txtSearchSAP").focusout(function(){
                 var regex = /^[a-zA-Z0-9-]+$/m;
                 var strSAP = $("#txtSearchSAP").val();
                 if (strSAP.match(regex) == null) {
                    alert("Please enter proper SAP ID");
                  }
                  setTimeout(function(){
                     $("#txtSearchSAP").val("");
                     $("#txtSearchSAP").focus();
                  }, 1);
            });
      });
   </script>