Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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警报即使在单击“确定”后仍会持续触发_Javascript_Jquery_Html - Fatal编程技术网

javascript警报即使在单击“确定”后仍会持续触发

javascript警报即使在单击“确定”后仍会持续触发,javascript,jquery,html,Javascript,Jquery,Html,我有一个文本框,希望用户在其中添加整数,并且位数不应小于10 这里的问题是,即使在单击“确定”后,警报消息仍会持续触发。请说明代码有什么问题。还建议是否有其他好的方法来实现这一点 函数校验长度(el){ 如果(el.value.length!=10 | | el.getAttribute('data-should-alert')=='false'){ 警报(“接受至少10个号码”); el.setAttribute('data-should-alert','false'); el.focus(

我有一个
文本框
,希望用户在其中添加整数,并且位数不应小于
10

这里的问题是,即使在单击“确定”后,
警报
消息仍会持续触发。请说明代码有什么问题。还建议是否有其他好的方法来实现这一点

函数校验长度(el){
如果(el.value.length!=10 | | el.getAttribute('data-should-alert')=='false'){
警报(“接受至少10个号码”);
el.setAttribute('data-should-alert','false');
el.focus();
}否则{
el.setAttribute('data-should-alert','true');
}
}
函数IsNumeric4(e){
var-keyCode=e.which?e.which:e.keyCode

var ret=((keyCode>=48&&keyCode我认为问题在于,在显示警报后,您正在聚焦,因为警报将再次触发模糊

setTimeout
提供了一种在
警报后调用
.focus()
的巧妙方法:

函数校验长度(el){
//这可能会导致一次警报,它将始终发出警报
if(el.value.length!=10/*| | el.getAttribute('data-should-alert')=='false'*/){
警报(“接受至少10个号码”);
el.setAttribute('data-should-alert','false');
//设定这个
setTimeout(函数(){
el.focus();
}, 10);
}否则{
el.setAttribute('data-should-alert','true');
}
}
函数IsNumeric4(e){
var-keyCode=e.which?e.which:e.keyCode

var ret=((keyCode>=48&&keyCode问题是当元素失去焦点时总是触发事件onblur

因此,一种解决方案是将该事件更改为onchange事件,而不是onblur

函数校验长度(el){
如果(el.value.length!=10 | | el.getAttribute('data-should-alert')=='false'){
警报(“接受至少10个号码”);
el.setAttribute('data-should-alert','false');
el.focus();
}否则{
el.setAttribute('data-should-alert','true');
}
}
函数IsNumeric4(e){
var-keyCode=e.which?e.which:e.keyCode

var ret=((keyCode>=48&&keyCode)此问题是因为
警报()
将焦点从
输入中移开,因此
模糊事件在循环中重复触发。解决方案,切勿使用
警报()
。改为以HTML显示消息。这是因为您正在验证模糊事件中的字段,所以每当您单击“确定”按钮时,它将再次触发模糊event@RoryMcCrossan:如何以及在何处显示消息。?@AlpeshJikadra:要在上使用其他事件吗?请告诉我,如果您想以这种方式进行测试,那么最好使用
console.log
而不是使用
alert
您在这方面做了哪些更改?是的,尝试一下。如果有更好的方法,请使用并告诉我,因为这种方法非常棘手。因为您的条件始终是真实的。好的,我已经修改了。请查看一下。您应该按照您的方式设置条件。在对条件的这一部分进行注释后,con连续警报不会再次显示,请尝试检查..感谢快速解决方案伙伴!但这不会再次触发警报。当用户单击任意位置时,将触发警报else@BNN打电话给focus并清理价值怎么样?这样就可以了work@BNN你可以找到你想用的方法。