导入的文件
<script src="js/jquery-1.8.3.js"></script>
<script src="js/valid/jquery.validate.min.js"></script>
验证的时候只能同步,不能异步
将提示错误放置于指定容器中
<div class="div-box">
<div id="errorInfo"></div> //提示错误放置的地方
<form id="formA" action="jsp/valid/testA.jsp">
<div class field-box">
<div class="field-text line-left">
<label>姓名:</label> <input type="text" value="" name="ename">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<div class="field-box">
<div class="field-text line-left">
<label>年龄:</label> <input type="number" name="age">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<input type="submit" value="提交">
</form>
</div>
<script type="text/javascript">
$(function(){
var container = $("#errorInfo"); //获取放置提示错误的
$("#formA").validate({
rules:{ //规则
ename:"required", //设置名字为必填
age:{ //设置年龄的规则
required:true,
range:[19,30]
}
},
messages:{
ename:{ //名字不符合规则时触发相应的mesg
required:"用户名称是必须的"
},
age:{
//年龄不符合规则时触发相应的mesgrequired:"年龄是必须要填写的",
range:"年龄必须是{0}到{1}之间"
}
},
errorElement:"div", //放置错误的div
errorLabelContainer: container, //放置错误的容器
})
})
</script>
通过按钮提交
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'demoA.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
.field-box{ width: 600px; border: 1px blue solid; margin-bottom: 10px}
.line-left{ float: left;}
.clearfiex{ clear: both;}
span.error { //错误时候出现的图标
background:url("images/unchecked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
span.success { //验证成功时的图标
background:url("images/checked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
</style>
<script src="js/jquery-1.8.3.js"></script>
<script src="js/valid/jquery.validate.min.js"></script>
<!-- <script src="js/valid/localization/messages_zh.min.js"></script> -->
</head>
<body>
<div class="div-box">
<form id="formA" action="jsp/valid/testA.jsp">
<div class="field-box">
<div class="field-text line-left">
<label>姓名:</label> <input type="text" value="" name="ename">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<div class="field-box">
<div class="field-text line-left">
<label>年龄:</label> <input type="number" name="age">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<input type="submit" value="提交">
<input type="button" value="提交2" onclick="submitFormX()">
</form>
</div>
<script type="text/javascript">
function submitFormX(){ //按钮提交
var flag = $("#formA").valid(); // valid() 表单验证的方法 返回true或false
alert(flag);
if(flag)
$("#formA").submit(); //提交
}
</script>
<script type="text/javascript">
$(function(){
$("#formA").validate({ //规则和错误消息要一致对应
debug: false,
rules:{ //规则
ename:"required",
age:{
required:true,
range:[19,30]
}
},
messages:{ //错误消息
ename:{
required:"用户名称是必须的"
},
age:{
required:"年龄是必须要填写的",
range:"年龄必须是{0}到{1}之间"
}
},
validClass:'success', //修复复合条件后正确图标无法出现
errorElement: "span", //将错误元素包装到span中
errorPlacement: function(error, element) { //error, 错误的消息(span包装好的) element 错误的表单元素
error.appendTo(element.parent().next(".field-msg")); //默认错误信息出现在表单元素的右侧,这里可以调整位置,这是将错误消息放到表单元素的下面的div中
},
success: function(label) { //laber是一个封装了的对象,对该对象添加验证成功的样式class,这个会出现在错误信息定义的位置
label.addClass("success");
}
})
})
</script>
</body>
</html>
form表单中的sumbit提交
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'demoA.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
.field-box{ width: 600px; border: 1px blue solid; margin-bottom: 10px}
.line-left{ float: left;}
.clearfiex{ clear: both;}
span.error {
background:url("images/unchecked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
span.success {
background:url("images/checked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
</style>
<script src="js/jquery-1.8.3.js"></script>
<script src="js/valid/jquery.validate.min.js"></script>
<!-- <script src="js/valid/localization/messages_zh.min.js"></script> -->
</head>
<body>
<div class="div-box">
<form id="formA" action="jsp/valid/testA.jsp">
<div class="field-box">
<div class="field-text line-left">
<label>姓名:</label> <input type="text" value="" name="ename">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<div class="field-box">
<div class="field-text line-left">
<label>年龄:</label> <input type="number" name="age">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<input type="submit" value="提交">
</form>
</div>
<script type="text/javascript">
$(function(){
$("#formA").validate({
debug: true,
rules:{
ename:"required",
age:{
required:true,
range:[19,30]
}
},
messages:{
ename:{
required:"用户名称是必须的"
},
age:{
required:"年龄是必须要填写的",
range:"年龄必须是{0}到{1}之间"
}
},
validClass:'success',
errorElement: "span",
errorPlacement: function(error, element) {
error.appendTo(element.parent().next(".field-msg"));
},
success: function(label) {
label.addClass("success");
}
})
})
</script>
</body>
</html>
submitHandler方式提交
submitHandler与success的区别:
success:当表单元素验证成功时执行,对于同一个表单元素,由于onkeyup、onfocusout、onsubmit等事件都会触发验证,所以本方法可能会多次执行。
submitHandler:当表单验证成功并提交时执行,
存在此方法时表单只能在此方法内部执行form.submit()才能提交,可理解成它替代了表单的onsubmit方法
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'demoA.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
.field-box{ width: 600px; border: 1px blue solid; margin-bottom: 10px}
.line-left{ float: left;}
.clearfiex{ clear: both;}
span.error {
background:url("images/unchecked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
span.success {
background:url("images/checked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
</style>
<script src="js/jquery-1.8.3.js"></script>
<script src="js/valid/jquery.validate.min.js"></script>
<!-- <script src="js/valid/localization/messages_zh.min.js"></script> -->
</head>
<body>
<div class="div-box">
<form id="formA" action="jsp/valid/testA.jsp">
<div class="field-box">
<div class="field-text line-left">
<label>姓名:</label> <input type="text" value="" name="ename">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<div class="field-box">
<div class="field-text line-left">
<label>年龄:</label> <input type="number" name="age">
</div>
<div class="field-msg line-left"></div>
<div class="clearfiex"></div>
</div>
<input type="submit" value="提交">
</form>
</div>
<script type="text/javascript">
$(function(){
$("#formA").validate({
debug: false,
rules:{
ename:"required",
age:{
required:true,
range:[19,30]
}
},
messages:{
ename:{
required:"用户名称是必须的"
},
age:{
required:"年龄是必须要填写的",
range:"年龄必须是{0}到{1}之间"
}
},
validClass:'success',
errorElement: "span",
errorPlacement: function(error, element) {
error.appendTo(element.parent().next(".field-msg"));
},
success: function(label) {
label.addClass("success");
},
submitHandler:function(form){ //替代了表单的onsubmit
alert(form); //提交表单的处理自己ajax提交 或 只能用
form.submit()}
})
})
</script>
</body>
</html>
与easyui的交互:
交互的地方
easyui的ajax提交中
-
onSubmit: function(){ //提交数据前触发,返回false 不做提交,返回true 才提交。
-
// do some check
-
alert("提交前触发");
-
return $("#formA").valid(); //在表单提交时验证。validate的验证方式交互的地方
-
} ,
代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- action="userServlet.do?dir=edit" -->
<style type="text/css">
.field-box{ width: 600px; border: 1px blue solid; margin-bottom: 10px}
.line-left{ float: left;}
.clearfiex{ clear: both;}
span.error {
background:url("images/unchecked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
span.success {
background:url("images/checked.gif") no-repeat 0px 0px;
padding-left: 16px;
}
</style>
<form id="userForm" method="post">
<fieldset>
<legend>用户编辑</legend>
<label>账户:</label> <input id="uname" type="text" value="${requestScope.user.uname}" name="uname"><br/>
<label>性别:</label>
<input type="radio" value="男" name="sex" ${requestScope.user.sex=="男"?"checked":""} > 男
<input type="radio" value="女" name="sex" ${requestScope.user.sex=="女"?"checked":""}> 女
<br/>
<label>年龄:</label> <input type="number" value="${requestScope.user.age}" name="age"><br/>
<input type="hidden" value="${requestScope.user.userid}" name="userid">
<input type="button" value="提交" onclick="submitFormX()">
</fieldset>
</form>
//validate的表单验证
<script type="text/javascript">
$(function(){
$("#formA").validate({
debug: true, //测试的时候用false,表示点击提交不提交,上线的时候改为
rules:{
ename:"required",
age:{
required:true,
range:[19,30]
}
},
messages:{
ename:{
required:"用户名称是必须的"
},
age:{
required:"年龄是必须要填写的",
range:"年龄必须是{0}到{1}之间"
}
},
validClass:'success',
errorElement: "span",
errorPlacement: function(error, element) {
error.appendTo(element.parent().next(".field-msg"));
},
success: function(label) {
label.addClass("success");
}
})
})
</script>
//easyui的框架ui
<script type="text/javascript">
function submitFormX(){
//var userinfo = $("#userForm").serialize() ;
// alert(userinfo);
$('#userForm').form({
url:'userServlet.do?dir=edit',
onSubmit: function(){ //提交数据前触发,返回false 不做提交,返回true 才提交。
// do some check
alert("提交前触发");
return $("#formA").valid(); //在表单提交时验证。validate的验证方式交互的地方
} ,
success:function(data){
var data = eval('(' + data + ')');
if(data.resultFlag){
$('#userWin').window('close');
$.messager.show({
title:'系统操作提示',
msg:'添加用户成功。',
timeout:5000,
showType:'slide',
style:{
right:'',
bottom:''
}
});
$('#userdg').datagrid('reload'); // 重新载入当前页面数据
}else{
}
}
});
$('#userForm').submit();
}
</script>