正则校验onblur方法求指教

正则校验onblur方法求指教

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String path=request.getContextPath();
    String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <center>
        <h1>用户注册</h1>
        <form action="<%=basePath %>/RegistServlet" method="post">
            <table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
                <tr>
                    <td>用户名</td>
                    <td><input type="text" name="username" pattern="\\w{3,12}" required="required" placeholder="用户名为3-12位字母数字或下划线组合"  onblur="checkUsername(this)"></td>
                </tr>
                <tr>
                    <td>密&nbsp;码</td>
                    <td><input type="password" name="password" pattern="\\d{6,12}" placeholder="密码长度为6-12位的纯数字"  id="password" onblur="checkPassword(this)"></td>
                </tr>
                <tr>
                    <td>确认密码</td>
                    <td><input type="password" name="checkPWD" pattern="\\d{6,12}" placeholder="密码长度为6-12位的纯数字"  onblur="checkRePassword(this)"></td>
                </tr>
                <tr>
                    <td>手机号码</td>
                    <td><input type="text" name="phone" pattern="[1][3578]\\d{9}" placeholder="请输入正确的手机号码格式" onblur="checkPhone(this)"></td>
                </tr>
                <tr>
                    <td>邮箱</td>
                    <td><input type="email" name="email" pattern="[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+" placeholder="请输入正确邮箱格式" required="required" onblur="checkEmail(this)"></td>
                </tr>
                <tr>
                    <td colspan="2" style="text-align:center">
                        <input type="submit" value="注册">
                        <input type="reset" value="重置">
                    </td>
                </tr>
            </table>
        </form>
    </center>
    <script type="text/javascript">
     //用户名:  
    var  usernameRegex = /^\w{3,12}$/;  
    //密码:  
    var passwordRegex = /^\d{6,12}$/;  
    //邮箱:  
    var emailRegex = /^[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+$/;  
    //手机号码
    var phoneRegex= /^[1][3578]\\d{9}$/;
    
       
    //alert("222");  
    function validateForm(){ //定义validateForm方法用于客户端校验  
        var flag = true;  
        //校验用户名  
        var usernameNode = byName("username"); //获得ID值为username的节点对象  
        var username = usernameNode.value;   //获得usernameNode节点的值,即用户在username文本框内填写的值  
        if(!usernameRegex.test(username)){    //验证获得到的值是否符合正则表达式   
           alert("用户名格式不正确");
        }  
           
        //校验密码  
        var passwordNode = byName("password");  //获得ID值为password的节点对象  
        var password = passwordNode.value;  
        if(!passwordRegex.test(password)){  
           alert("密码格式不正确");
        }  
           
        //确认密码  
        var rePasswordNode = byName("checkPWD");  //获得ID值为rePassword的节点对象  
        var rePassword = rePasswordNode.value;  
        if(!password==rePassword){  
            alert("密码不一致");
        }
           
        //校验邮箱  
        var emailNode = byName("email");  //获得ID值为Email的节点对象  
        var email = emailNode.value;  
        if(!emailRegex.test(email)){  
           alert("邮箱格式不正确");
                    }  
 
         
     
           
    function byName(name){  //自定义方法,用于获取传递过来的ID值对应的节点对象  
        return document.getElementByTagName(name);  
    }  
           
    function checkUsername(node){ //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //校验用户名  
        var username = node.value;  //得到传递过来的节点对象的值  
        if(!usernameRegex.test(username)){  //验证是否符合节点对应的正则表达式  
             alert("用户名格式不正确");
        }
    }  
       
    function checkPassword(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //校验密码  
        var password1 = node.value;  
        //alert("111");  
        if (!passwordRegex.test(password)) {  
              alert("密码格式不正确");  
        }  
        
    }     
           
    function checkRePassword(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //确认密码                
        var rePassword = node.value;  
        var password = byName("password").value;  
        //alert(repassword+"***"+password);           
        if(password!=rePassword){                    
            alert("密码不一致");
        }
    }    
    
    function checkPhone(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //确认密码                
        var phone = node.value;  
        //alert(repassword+"***"+password);           
        if(!phoneRegex.test(phone)){                    
            alert("电话格式不正确");
        }
    }    
     
    function checkEmail(node){  //当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范  
        //校验邮箱  
        var email = node.value;  
        if(!emailRegex.test(email)){  
            alert("邮箱格式不正确"); 
        }
    }
     
    </script>
</body>
</html>

并不成功

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 爱动脑筋的小伙伴 2019-03-15 17:52:37
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path=request.getContextPath();
	String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<h1>用户注册</h1>
		<form action="<%=basePath %>/RegistServlet" method="post">
			<table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
				<tr>
					<td>用户名</td>
					<td><input type="text" name="username" id="username" pattern="\\w{3,12}" required="required" placeholder="用户名为3-12位字母数字或下划线组合"  onblur="checkUsername()"></td>
				</tr>
				<tr>
					<td>密&nbsp;码</td>
					<td><input type="password" name="password" pattern="\\d{6,12}" placeholder="密码长度为6-12位的纯数字"  id="password" onblur="checkPassword(this)"></td>
				</tr>
				<tr>
					<td>确认密码</td>
					<td><input type="password" name="checkPWD" pattern="\\d{6,12}" placeholder="密码长度为6-12位的纯数字"  onblur="checkRePassword(this)"></td>
				</tr>
				<tr>
					<td>手机号码</td>
					<td><input type="text" name="phone" pattern="[1][3578]\\d{9}" placeholder="请输入正确的手机号码格式" onblur="checkPhone(this)"></td>
				</tr>
				<tr>
					<td>邮箱</td>
					<td><input type="email" name="email" pattern="[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+" placeholder="请输入正确邮箱格式" required="required" onblur="checkEmail(this)"></td>
				</tr>
				<tr>
					<td colspan="2" style="text-align:center">
						<input type="submit" value="注册">
						<input type="reset" value="重置">
					</td>
				</tr>
			</table>
		</form>
	</center>
	<script type="text/javascript">
	 //用户名:  
    var  usernameRegex = /^[a-zA-Z_0-9]{3,12}$/;//\w{3,12}$/;  
    //密码:  
    var passwordRegex = /^\d{6,12}$/;  
    //邮箱:  
    var emailRegex = /^[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+$/;  
    //手机号码
    var phoneRegex= /^[1][3578]\\d{9}$/;
   
    function byId(id){  //自定义方法,用于获取传递过来的ID值对应的节点对象  
        return document.getElementById(id);  
    }  
   
    function checkUsername(){
    	System.out.println("xx");
    	var username=byId("username").value;
    	 if(!usernameRegex.test(username)){    //验证获得到的值是否符合正则表达式   
             window.alert("用户名格式不正确"); 
    	 	 System.out.println("xx");
          }  
    }
  
	</script>
</body>
</html>

只测试username,并没有触发什么

  • 同学你好, System.out.println("xx");这句代码是Java语句,不能在js中使用,这里同学可以换成alert("xx");弹出框提示。另外应该学会看浏览器控制台,如果没有达到效果,看一下控制台是否报错。祝:学习愉快~
    2019-03-15 18:47:04
好帮手慕阿满 2019-03-15 17:46:00

同学你好,可以在input中设置id,在js中通过id来获取输入的值,如:

<td><input type="text" id="username" name="username" pattern="\\w{3,12}" required="required" placeholder="用户名为3-12位字母数字或下划线组合"  onblur="checkUsername()"></td>

checkUsername()函数这样写:

 function checkUsername(){   
        //校验用户名  
        var username=document.getElementById("username").value;
    	if(!usernameRegex.test(username)){
    		alert("用户名格式不正确");
    	}
    }

这样即可校验用户名的格式。建议同学先注释其他的,一个一个来完成校验,这个可以了,再校验下一个。使用同学的代码验证,在浏览器的控制台会报很多的错,建议同学一个一个来。

祝:学习愉快~

  • 您好老师,我已经删除了所有其他代码,只留下checkUsername(),但是并没有触发,我发到我要回答里,您能帮我看一下么
    2019-03-15 17:51:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师