Javascript验证警报正在多次触发
问题描述:
我有一个场景,我想查看一些regex
并在正则表达式失败时触发alert
消息。Javascript验证警报正在多次触发
所以会发生的是,当点击确定后触发警报时,它会再次触发相同的警报。
下面是代码: -
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" />
答
尝试调用validateSAPID(); FilterGrid(this)里面; onkeyup事件
答
(我知道我的语法不好,所以下跌自由编辑)
我已经做了一些测试,似乎是$("#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>
包裹.focus/.VAL线在setTimeout的 - 顺便说一下,Firefox和Chrome不要产生你声称的行为 - 你使用什么浏览器,你可以创建一个最小*工作*例如发生这种情况 –
@JaromandaX:我检查在CHROME – BNN
我看到的代码模式的行为就像在Chrome中奇怪的是,我写的一个简单的测试没有 –