4.前端注册表单验证 && 表单回填
2024-08-21 09:34:01
表单验证
前端表单验证就是在 jsp 页面中添加验证逻辑,使得注册表单在传入后台之前先进行一次表单验证
在jsp文件里的 head 块里面添加 jQuery 代码
<script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
<script type="text/javascript">
var formObj={
"checkForm":function(){
// 1.非空验证
var flag=true; // 控制表单的变量,默认为true
flag=this.checkNull("username","用户名不能为空") && flag;
flag=this.checkNull("password","密码不能为空") && flag;
flag=this.checkNull("password2","确认密码不能为空") && flag;
flag=this.checkNull("nickname","昵称不能为空") && flag;
// 2.密码一致验证
flag=this.checkPassword("password","两次密码应该一致") && flag;
// 3.邮箱格式验证
flag=this.checkEmail("email","邮箱格式不正确") && flag;
return flag;
},
"checkemail":function(name,msg){
var email=$("input[name='"+name+"']").val();
// 当邮箱的值不为空串时再进行格式判断
if($.trim(email) != ""){
// 123@163.com.cn
var reg=/^\w+@\w+(\.\w+)+$/;
if(!reg.test(email)){
// 设置错误提示信息
this.setMsg(name, msg);
return false;
}else{
// 设置清空之前添加的错误信息
this.setMsg(name,"");
return true;
}
}
return false;
}, "checkPassword":function(name,msg){
var psd1=$("input[name='password']").val();
var psd2=$("input[nmae='password2']").val();
if($.trim(psd1)!=""&&$.trim(psd2)!=""){
if(psd1!=psd2){
// 添加错误提示信息
this.setMsg(name+"2",msg);
return false;
}else{
// 清空之前添加的错误提示信息
this.setMsg(name+"2","");
return true;
}
}
return false;
}, "checkNull":function(name,msg){ // 用来判断input值是否为null的方法
// 拿到对应的input框的值
var value=$("input[name='"+name+"']").val();
// 判断是否为空
if($.trim(value)==""){
// 如果为空,则调用设置消息的方法,将错误信息显示在input的后面
this.setMsg(name,msg);
// 表单不应该提交
return false;
}else{
// 将之前添加的错误提示信息清空
this.setMsg(name, "");
// 表单可以提交
return true;
}
}, "setMsg":function(name,msg){
// 获取name指定的input后面的span,然后将传入的错误信息显示在span内部
$("input[name='"+name+"']").nextAll("span").html(msg).css("color","red");
}
}; </script>
当用户点击注册的时候,前台会先进行一次表单验证
<!-- action:请求的路径 ,method:请求方式 -->
<form action="/RegistServlet" method="POST" onSubmit="return formObj.checkForm()" >
表单回填
在用户填错注册信息之后,点击注册按钮,注册不成功,此时会自动将用户已经填写的信息重新填写到表单里,提升用户体验
<tr><!-- 如果出现错误将在表单顶部显示 -->
<td colspan="2" style="text-align:center;color:green">
<%=request.getAttribute("errMsg")==null?"":request.getAttribute("errMsg") %>
</td>
</tr>
<tr>
<td class="tds">用户名:</td>
<td>
<!-- 回填 -->
<input type="text" name="username" value="<%=request.getParameter("username")==null?"":request.getParameter("username") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">密码:</td>
<td>
<input type="password" name="password" value="<%=request.getParameter("password")==null?"":request.getParameter("password") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">确认密码:</td>
<td>
<input type="password" name="password2" value="<%=request.getParameter("password2")==null?"":request.getParameter("password2") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">昵称:</td>
<td>
<input type="text" name="nickname" value="<%=request.getParameter("nickname")==null?"":request.getParameter("nickname") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">邮箱:</td>
<td>
<input type="text" name="email" value="<%=request.getParameter("email")==null?"":request.getParameter("email") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">验证码:</td>
<td>
<input type="text" name="valistr"/>
<img src="img/regist/yzm.jpg" width="" height="" alt="" />
</td>
</tr>
<tr>
<td class="sub_td" colspan="2" class="tds">
<input type="submit" value="注册用户"/>
</td>
</tr>
完整的 regist.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>欢迎注册BinGou</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="css/regist.css"/>
<script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
<script type="text/javascript">
var formObj={
"checkForm":function(){
// 1.非空验证
var flag=true; // 控制表单的变量,默认为true
flag=this.checkNull("username","用户名不能为空") && flag;
flag=this.checkNull("password","密码不能为空") && flag;
flag=this.checkNull("password2","确认密码不能为空") && flag;
flag=this.checkNull("nickname","昵称不能为空") && flag;
// 2.密码一致验证
flag=this.checkPassword("password","两次密码应该一致") && flag;
// 3.邮箱格式验证
flag=this.checkEmail("email","邮箱格式不正确") && flag;
return flag;
},
"checkemail":function(name,msg){
var email=$("input[name='"+name+"']").val();
// 当邮箱的值不为空串时再进行格式判断
if($.trim(email) != ""){
// 123@163.com.cn
var reg=/^\w+@\w+(\.\w+)+$/;
if(!reg.test(email)){
// 设置错误提示信息
this.setMsg(name, msg);
return false;
}else{
// 设置清空之前添加的错误信息
this.setMsg(name,"");
return true;
}
}
return false;
}, "checkPassword":function(name,msg){
var psd1=$("input[name='password']").val();
var psd2=$("input[nmae='password2']").val();
if($.trim(psd1)!=""&&$.trim(psd2)!=""){
if(psd1!=psd2){
// 添加错误提示信息
this.setMsg(name+"2",msg);
return false;
}else{
// 清空之前添加的错误提示信息
this.setMsg(name+"2","");
return true;
}
}
return false;
}, "checkNull":function(name,msg){ // 用来判断input值是否为null的方法
// 拿到对应的input框的值
var value=$("input[name='"+name+"']").val();
// 判断是否为空
if($.trim(value)==""){
// 如果为空,则调用设置消息的方法,将错误信息显示在input的后面
this.setMsg(name,msg);
// 表单不应该提交
return false;
}else{
// 将之前添加的错误提示信息清空
this.setMsg(name, "");
// 表单可以提交
return true;
}
}, "setMsg":function(name,msg){
// 获取name指定的input后面的span,然后将传入的错误信息显示在span内部
$("input[name='"+name+"']").nextAll("span").html(msg).css("color","red");
}
}; </script>
</head>
<body>
<!-- action:请求的路径 ,method:请求方式 -->
<form action="/RegistServlet" method="POST" onSubmit="return formObj.checkForm()" >
<h1>欢迎注册BinGou</h1>
<table>
<tr><!-- 如果出现错误将在表单顶部显示 -->
<td colspan="2" style="text-align:center;color:green">
<%=request.getAttribute("errMsg")==null?"":request.getAttribute("errMsg") %>
</td>
</tr>
<tr>
<td class="tds">用户名:</td>
<td>
<!-- 回填 -->
<input type="text" name="username" value="<%=request.getParameter("username")==null?"":request.getParameter("username") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">密码:</td>
<td>
<input type="password" name="password" value="<%=request.getParameter("password")==null?"":request.getParameter("password") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">确认密码:</td>
<td>
<input type="password" name="password2" value="<%=request.getParameter("password2")==null?"":request.getParameter("password2") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">昵称:</td>
<td>
<input type="text" name="nickname" value="<%=request.getParameter("nickname")==null?"":request.getParameter("nickname") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">邮箱:</td>
<td>
<input type="text" name="email" value="<%=request.getParameter("email")==null?"":request.getParameter("email") %>"/>
<span></span>
</td>
</tr>
<tr>
<td class="tds">验证码:</td>
<td>
<input type="text" name="valistr"/>
<img src="img/regist/yzm.jpg" width="" height="" alt="" />
</td>
</tr>
<tr>
<td class="sub_td" colspan="2" class="tds">
<input type="submit" value="注册用户"/>
</td>
</tr>
</table>
</form>
</body>
</html>
regist.jsp
最新文章
- GitHub for Windows 內建 Git Shell 執行時顏色所代表的意義
- CSS实现正方体旋转
- 2014 牡丹江现场赛 A.Average Score(zoj 3819) 解题报告
- Educational Codeforces Round 15 B
- Linux makefile 教程 很具体,且易懂
- 整理 iOS 9 适配中出现的坑
- Android-x86虚拟机安装配置全攻略
- C语言调用汇编实现字符串对换
- hdoj 2767 Proving Equivalences【求scc&;&;缩点】【求最少添加多少条边使这个图成为一个scc】
- Java NIO (一) 初识NIO
- BZOJ 3697: 采药人的路径 [点分治] [我想上化学课]
- 在一台电脑上运行两个或两个以上的tomcat
- 淘宝开放平台使用WebClient,WebRequest访问时的错误提示导致麻烦
- Unity之流光效果
- javascript作用域、闭包、对象与原型链
- 常用模块 plus
- LINQ中in的实现方法-LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4)
- POJ 3709 K-Anonymous Sequence - 斜率优化dp
- hdu-2844(完全背包+二进制优化模板)
- 2016CCPC东北地区大学生程序设计竞赛 (2018年8月22日组队训练赛)