Roh*_*rma 7 html javascript dom-events
无限循环中的警报框,在这里我试图在2个连续的字段上放置弹出警报消息,这样它们就不会留空,我知道它为什么会发生 - 因为当启动第一个函数的onblur事件时它将焦点放在第二个当它跳回到第二个文本字段的第一个onblur时启动.
我知道在表单级别完成验证会是最好的,但这是我得到的要求.
有帮助吗?
Javascript代码
function x()
{
if( document.getElementById("1").value.length==0)
{
alert('1 is required');
document.getElementById("1").focus();
}
}
function y()
{
if(document.getElementById("2").value.length==0)
{
alert('2 is required');
document.getElementById("2").focus();
}
}
Run Code Online (Sandbox Code Playgroud)
HTML代码
<input type="text" name="City Name" id="1" onblur="javascript:x();">
<input type="text" name="Kitty Name" id="2" onblur="javascript:y();">
Run Code Online (Sandbox Code Playgroud)
小智 6
onblur()您可以在事件中处理它,而不是在事件中处理它onchange()。
如果仍要使用onblur(),请使用内部焦点setTimeout,如下所示。
alert('2 is required');
setTimeout(function() { document.getElementById("2").focus(); }, 100);
Run Code Online (Sandbox Code Playgroud)
小智 1
我的建议:将您的验证合并到一种方法中,并按顺序检查其中的每个方法。
所以(伪代码):
function validate() {
for (field in fieldlist) {
if (document.getElementById(field).value.length == 0) {
displayerror();
document.getElementById(field).focus();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样您一次只会显示一个错误。