onblur事件无法再次触发

liudayiwork 2016-01-26 10:12:23
<tr>
<td width="20%" height="30" align="right" class="left_txt2">会员名称</td>
<td width="3%" > </td>
<td width="32%" height="30" >
*<input type="text" name="userName" id="userName" placeholder="4-20个由字母 数字 下划线组成的字符" size="30" onblur="return check(1)" />
<span id="checkusername"></span>
</td>
<td width="45%" height="30" class="left_txt" id="tdText"></td>
</tr>
<tr bgcolor="#f2f2f2">
<td width="20%" height="30" align="right" class="left_txt2">昵称</td>
<td width="3%" > </td>
<td width="32%" height="30" >
*<input type="text" value="" name="nickName" id="nickName" placeholder="如:superman" size="30" onblur="check(2)/>
<span id="checknickname"></span>
</td>
<td width="45%" height="30" class="left_txt" id="tdText"></td>
</tr>
<script type="text/javascript">
function check(num){
switch (num){
case 0:
if(document.getElementById("userName").value==""
||document.getElementById("nickName").value==""
||document.getElementById("password").value==""
||document.getElementById("tel").value==""
||document.getElementById("address").value==""){

alert("添加失败,带*为必填项!");
return false;
}else

return true;

break;

case 1:
var username= document.getElementById("userName").value;
var check=document.getElementById("checkusername");
var reg=/[0-9a-zA-Z_]{4,18}/;
if(username==""){
check.style.color="red";
check.innerHTML="会员名不能为空!";
}else if(reg.test(username) != true){
check.style.color="red";
check.innerHTML="会员名称格式错误!";
}
break;
case 2:
var nickname=document.getElementById("nickName").value;
var check=document.getElementById("checknickname");
if(nickname==""){
check.style.color="red";
check.innerHTML="昵称不能为空!";
}
break;


}
}

上面有我的html跟js代码 为什么onblur事件当我不输入内容的时候可以触发 当我再次输入不符合正则表达式的字符时也可以触发,但是当我再次输入符合要求的字符时触发不了?求助 !
...全文
327 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
啊仇 2016-01-27
  • 打赏
  • 举报
回复
对的 。 还可以用if判断 。
hch126163 2016-01-27
  • 打赏
  • 举报
回复
学会单步调试很重要! 或者用console.log 来监视 最笨的方法: function check(num){ alert(num+" "+document.getElementById("userName").value);
Go 旅城通票 2016-01-26
  • 打赏
  • 举报
回复
不是不触发,是你没有还原状态设置清空容器显示的内容,还是显示原来的内容就感觉和没触发一样了 case 1: var username= document.getElementById("userName").value; var check=document.getElementById("checkusername"); var reg=/[0-9a-zA-Z_]{4,18}/; if(username==""){ check.style.color="red"; check.innerHTML="会员名不能为空!"; } else if (reg.test(username) != true) { check.style.color = "red"; check.innerHTML = "会员名称格式错误!"; } else { check.innerHTML = ""; } break; case 2: var nickname=document.getElementById("nickName").value; var check=document.getElementById("checknickname"); if(nickname==""){ check.style.color="red"; check.innerHTML="昵称不能为空!"; } else { check.innerHTML = ""; } break;

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧