先说说前端校验,在做web开发时,用户与后台进行交互是必要的。在交互的过程中引导用户合理的与系统进行交互,有两方面好处:
第一:对于用户来说,增强用户体验,规范用户输入,减少用户盲目输入,从而浪费时间。
第二:对系统而言,减小不规范输入导致服务器的压力,尽量保证用户输入的信息,在提交到服务器时的正确性,避免层层跳转、提交,然后出错,再层层抛出异常,捕获异常,处理异常。可谓“劳民伤财”。
在做表单验证时,可采用jquery.validate插件,刚学的,拿来捋捋:
1、在要校验的页面中引入如下js
<script type="text/javascript" src="${js}/jquery-1.7.1.js"></script>
<script type="text/javascript" src="${js}/jquery.validate1.9.js"></script>
<script type="text/javascript" src="${js}/validateAddMethod.js"></script>
<script type="text/javascript" src="${js}/messages_cn.js"></script>
对上述代码的说明:要用jquery.validate.js进行校验,当然得引入jquery.js,这里我用的是版本1.7.1;jquery.validate.js用的版本是1.9;第三个js是自定义的校验,毕竟插件中的校验不一定完全适用于我们开发中的需求,这种自定义方式比较灵活,可扩展;最后一个js是对校验提示的统一口径。
2、jsp中要校验的form表单如下:
<form action="" id="editForm" name="editForm" method="post">
<table>
<tr>
<td>用户名称:</td>
<td><input type="text" name="userAccount"
id="userAccount" maxlength="65"/>
<span style="color: red">*</span>
</td>
</tr>
<tr>
<td>用户密码:</td>
<td><input type="password" name="userPwd"
id="userPwd" maxlength="65"/>
<span style="color: red">*</span>
</td>
</tr>
<tr>
<td>再次输入密码:</td>
<td><input type="password" name="userPwda"
id="userPwda" maxlength="65"/>
<span style="color: red">*</span>
</td>
</tr>
</table>
</form>
3、校验的js如下:
$(document).ready(function() {
$("#editForm").validate( {
rules : {
userAccount : {
required :true, stringCheck :true, byteRangeLength :[1,8],
remote:{
url:'${contextPath}/admin/UserAction_validateUserAccount.action',
type:"post",
dateType:"json",
}
},
userPwd :{
required :true, rangelength :[6,16]
},
userPwda : {
required :true, equalTo :"#userPwd"
},
},
errorPlacement : function(error, element) {
error.appendTo(element.parent());
},
focusInvalid :false,
onkeyup :false
});
上边的代码说明:remote比较特殊,默认传递的参数即为userAccount=$("#userAccount").val(), 这个是jquery.validate自动加参,不用手动修改,若参数名称不是变量名,可以自行修改成:
remote: "url?paramName" + $("#userAccount").val(); 这时校验方法需返回boolean值,例如:userAccount不可用就out.print(false)或userAccount可用就out.print(true);
在这段代码中有该插件内置的验证方式参看其API,以及我们自定义的验证方式,在后边我们都将贴出代码,或者加在附件中。
4、remote校验的后台java代码如下:
//校验用户是否存在
public String validateUserAccount() throws Exception{
response.setContentType(UserAction.CONTENT_TYPE);
PrintWriter out = response.getWriter();
String userAccount = request.getParameter("userAccount");
String result = "true";
if(StringUtils.isNotEmpty(userAccount)){
List oldUserList = facadeService.findOldUser(
userAccount);
if(oldUserList!=null&&oldUserList.size()>0){
result = "false";
}
}
out.print(result);
return null;
}
5、messages_cn.js代码如下:
jQuery.extend(jQuery.validator.messages, {
required: "此处不能为空",
remote: "输入项已存在,请重新输入",
email: "请输入正确格式的电子邮件",
url: "请输入合法的网址",
date: "请输入合法的日期",
dateISO: "请输入合法的日期 (ISO).",
number: "请输入合法的数字",
digits: "只能输入整数",
creditcard: "请输入合法的信用卡号",
equalTo: "请再次输入相同的值",
accept: "请输入拥有合法后缀名的字符串",
maxlength: jQuery.validator.format("请输入一个长度最多是 {0} 的字符串"),
minlength: jQuery.validator.format("请输入一个长度最少是 {0} 的字符串"),
rangelength: jQuery.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
max: jQuery.validator.format("请输入一个最大为 {0} 的值"),
min: jQuery.validator.format("请输入一个最小为 {0} 的值")
});
6、jquery.validate.js的api在附件中,自定义的校验validateAddMethod.js将另起一篇文章。其中包括本人搜集的一个汇总