时,
此表单的输出是每当您输入错误的字符时,警告就会在您的Onblur后立即出现在右侧。当您再次在框中输入正确的字符并再次输入Onblur时,警告将消失。
脚本运行正常。
有什么建议如何在这种情况下出现警告消息?
这是代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
function editThisOne(regThat,input,spanId,spanMessage)
{
if(!regThat.test(input))
{
if(spanId!=null)
while(spanId.firstChild)
spanId.removeChild(spanId.firstChild)
spanId.appendChild(document.createTextNode(spanMessage))
return false;
}
else
{
if(spanId!=null)
while(spanId.firstChild)
spanId.removeChild(spanId.firstChild)
return true;
}
}
function changeThis(wow,that)
{
return editThisOne(/[A-Za-z.'-]{2,15}s?[A-Za-z.'-]{2,15}s?[A-Za-z.'-]{2,15}/,wow.value,that,"Please enter name correctly");
}
</script>
<div>
Enter your name:
<input id="name" onBlur="changeThis(this,document.getElementById('thisSpan'))">
<span id="thisSpan"></span>
</div>
</body>
</html>
您的正则发动机可能缺乏启动( ^
)和end( $
)定界符,这意味着只要输入字符串包含任何地方的有效字符序列,它就不会验证正如预期的。试试以下以下等级:
/^[A-Za-z.'-]{2,15}s?[A-Za-z.'-]{2,15}s?[A-Za-z.'-]{2,15}$/
尝试
<input id="name" onkeyup="changeThis(this,document.getElementById('thisSpan'))">
而不是
<input id="name" onBlur="changeThis(this,document.getElementById('thisSpan'))">
onkeyup在每次击键上都会发射(每次,让您刚刚按下的按钮返回)。onblur只是触发,当元素失去焦点时(单击其他地方,按下)
onBlur()
当表单元素失去焦点时,事件发生 当用户发布键
onkeyup()
发生事件。