jquery.validate和jquery.form配合实现验证表单后AJAX提交
基础代码其实很简单,之后一点一点扩充。最终代码写在最后。
表单:
<form action="@Url.Action("AddColumns","Content")" method="post" id="AddColumnsForm">
<div class="form-group js-EditCol" id="AddName">
<label class="control-label">名称</label>
<input name="Name" class="form-control" required />
</div>
<div class="form-group js-EditCol" id="AddRemark">
<label class="control-label">备注</label>
<input name="Remark" class="form-control" />
</div>
<div class="form-group js-EditCol" id="AddColumnTypeId">
<label class="control-label">类型</label>
<select class="form-control" name="ColumnTypeId" id="AddColumnTypeIdSel" required>
</select>//下拉列表空置验证之要项目的Value值是空的就认为是空值
</div>
<input type="submit" class="btn btn-primary" value="新增栏目" />
<input type="reset" class="btn btn-default" value="清空" />
</form>
javascript:
$(document).ready(function () {
$("#AddColumnsForm").validate({
submitHandler: function(form) {
$(form).ajaxSubmit();
}
});
});
后面再加强一下,刷新下页面显示的数据 我用的是easyui
$(document).ready(function () {
$("#AddColumnsForm").validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
success: function (result) { //表单提交后更新页面显示的数据
$('#TreeTable').treegrid('reload');
var d = result.split(';');
ShowMsg(d[0], d[1], d[2]);
}
});
}
});
});
然后在修改下错误信息显示位置,符合bootstrap样式
$(document).ready(function () {
$("#AddColumnsForm").validate({
errorPlacement: function (error, element) {
element.next('span.help-block').remove();
element.after('<span class="help-block">' + error.text() + '</span>');
}, success: function (label) {
//加上就好了,不加这段代码校验成功后错误信息不取消
}, submitHandler: function (form) {
$(form).ajaxSubmit({
success: function (result) {
$('#TreeTable').treegrid('reload');
var d = result.split(';');
ShowMsg(d[0], d[1], d[2]);
}
});
}
});
之后增加bootstrap的校验样式
$(document).ready(function () {
$("#AddColumnsForm").validate({
errorPlacement: function (error, element) {
element.next('span.help-block').remove();
element.after('<span class="help-block">' + error.text() + '</span>');
}, success: function (label) {
}, highlight: function (element, errorClass, validClass) {
$(element).parent().addClass('has-error');
}, unhighlight: function (element, errorClass, validClass) {
$(element).parent().removeClass('has-error');
}, submitHandler: function (form) {
$(form).ajaxSubmit({
success: function (result) {
$('#TreeTable').treegrid('reload');
var d = result.split(';');
ShowMsg(d[0], d[1], d[2]);
}
});
}
});
然后还有错误信息提示文字。
$(document).ready(function () {
$("#AddColumnsForm").validate({
errorPlacement: function (error, element) {
element.next('span.help-block').remove();
element.after('<span class="help-block">' + error.text() + '</span>');
}, success: function (label) {
}, highlight: function (element, errorClass, validClass) {
$(element).parent().addClass('has-error');
}, unhighlight: function (element, errorClass, validClass) {
$(element).parent().removeClass('has-error');
}, messages: {
Name: "必须填写栏目名称。",
ColumnTypeId: "请选择栏目类型。",
UpColumnId: "必须选择上一级的栏目"
}, submitHandler: function (form) {
$(form).ajaxSubmit({
success: function (result) {
$('#TreeTable').treegrid('reload');
var d = result.split(';');
ShowMsg(d[0], d[1], d[2]);
}
});
}
});
最终是这样的
$(document).ready(function () {
$("#AddColumnsForm").validate({
errorPlacement: function (error, element) {
//出错后显示错误提示,使用bootstrap辅助文本 error是默认显示错误信息的lable,element是出错的文本框
element.next('span.help-block').remove();
element.after('<span class="help-block">' + error.text() + '</span>');
}, success: function (label) {
//虽然里面没有操作,但是不加这行代码校验成功后错误提示文字不消失。
}, highlight: function (element, errorClass, validClass) {
//校验失败后增加bootstrap校验失败样式。
$(element).parent().addClass('has-error');
}, unhighlight: function (element, errorClass, validClass) {
//校验失败后去掉bootstrap校验失败样式。
$(element).parent().removeClass('has-error');
}, messages: {
//自定义错误提示文本
Name: "必须填写栏目名称。",
ColumnTypeId: "请选择栏目类型。",
UpColumnId: "必须选择上一级的栏目"
}, submitHandler: function (form) {
$(form).ajaxSubmit({
//表单提交成功后更新页面内容并弹出提示框的代码
success: function (result) {
$('#TreeTable').treegrid('reload');
var d = result.split(';');
ShowMsg(d[0], d[1], d[2]);
}
});
}
});
UPDATE in 2015年9月1日
后来我又改成这样的了,不是一个表单了,但是都差不多。
直接在上边设置表单验证默认值,这样有多个表单的时候不需要重新写了。
我把验证规则写到javascript里了,因为我发现直接把验证规则像一开始那样直接写到标签里有些不支持,比如number,不知道怎么回事,可能我的写法本身就不对吧,因为我在网上没查到过和我写的一样的,是MVC自带验证生成的方式,虽然MVC使用的也是jquery.validate进行表单验证,但是一个页面多个表单MVC自带的验证就不好用了。
jQuery.validator.setDefaults({
errorPlacement: function (error, element) {
element.next('span.help-block').remove();
element.after('<span class="help-block">' + error.text() + '</span>');
}, success: function (label) {
}, highlight: function (element, errorClass, validClass) {
$(element).parent().addClass('has-error');
}, unhighlight: function (element, errorClass, validClass) {
$(element).parent().removeClass('has-error');
}
});
$("#editDatafm").validate({
rules:{
Name: {
required:true
}, Order: {
required: true,
number: true
}
},
messages: {
Name: "必须填写字典数据名称。",
Order:{
number: "排序种子必须为整数。",
required: "必须填写排序种子。"
}
}, submitHandler: function (form) {
$(form).ajaxSubmit({
success: function (result) {
$('#EditDataDlg').dialog('close');
$('#rightTable').datagrid('reload');
var d = result.split(';');
ShowMsg(d[0], d[1], d[2]);
}
});
}
});
顺便,如果是在表单之外的按钮要提交表单的话必须用 $("#editDatafm").submit(); 如果使用 document.getElementById("").submit(); 的话会不经过验证直接提交,
jquery.validate和jquery.form配合实现验证表单后AJAX提交的更多相关文章
- jsp验证表单后再提交
在提交表单时,我们常常需要验证核实表单内容,若都不为空时,方能提交:若有文本框为空则不提交,并获取鼠标焦点到文本框上 ,所以我们可以利用onsubmit的方法来做,请看下面例子: <html&g ...
- jQuery用面向对象的思想来编写验证表单的插件
本人的重点是怎么构建一个简单有效可扩展的jQuery表单验证插件,这篇文章没有教你怎么用 validate plugin.我们的重点在学习一些jQuery,Javascript面向对象编程的知识. 下 ...
- jquery序列化from表单使用ajax提交返回json数据(使用struts2注解result type = json)
1.action类引入struts2的"json-default"拦截器栈 @ParentPackage("json-default") //示例 @Paren ...
- Form 表单用 Ajax 提交数据并用 jQuery Validate 验证
表单填写需要验证可用插件 jQuery Validate 提交数据使用 Ajax 可操控性得到提到 注意:请自行引入 jQuery 和 jQuery Validate HTML 代码 <form ...
- jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...
- bootstrapValidator验证表单后清除当次验证的方法
用bootstrapValidator的resetForm()方法: <!-- // create server begin --> <div class="modal f ...
- MVC4中 jquery validate 不用submit方式验证表单或单个元素
正确引入MVC4 jquery验证的相关文件 <script src="/Scripts/jquery-1.4.4.js"></script> <sc ...
- MVC中 jquery validate 不用submit方式验证表单或单个元素
<script src="/Scripts/jquery-1.4.4.js"></script> <script src="/Scripts ...
- jquery.validate校验+jquery.form提交,配合使用
原文链接:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html 概述:本篇主要讨论jquery.validate结合jque ...
随机推荐
- django之model多表操作
一对多表之间的查询: class userInfo(models.Model): name = models.CharField(max_length=50) password = models.Ch ...
- iOS 弹幕制作
离职的最后一天,在公司学习下弹幕的制作.基于OC. 主要思路: 1.首先建一个弹幕类BulletView,基于UIView,然后在该类上写个UIlabel,用于放置弹幕文字,然后前端放置一个UIIma ...
- Python pip源更改
将pip源设置为阿里源 windows 打开文件资源管理器(文件夹地址中) 地址栏上面输入 %appdata% 在这里面新建一个文件夹pip 在pip文件夹里面新建一个文件叫做 pip.ini,内容如 ...
- 【转】Spring-boot 字符集设置 解决乱码方案
使用spring-boot开发时候,有时候程序没事,往往不经意会造成中文到前端变成乱码(????这样情况) 下面给出spring-boot项目统一字符集设置方案: 1.Spring Boot修改编码方 ...
- Flask+uwsgi+virtualenv环境配置
Linux系统版本: SLES12sp3 (阿里云) 1. 首先需要安装python-devel,否则后续安装会报错! rpm -qa|grep python-base 结果: python-base ...
- vue2.0 父子组件通信 兄弟组件通信
父组件是通过props属性给子组件通信的来看下代码: 父组件: <parent> <child :child-com="content"></chil ...
- Mac添加环境变量方法
一句话总结:找到paths文件编辑一下把要加路径写进去 转载注明出处http://www.cnblogs.com/billyrun/p/8631165.html 1.终端输入命令open /etc 开 ...
- Unity Shader 矩阵基本信息
基本信息 mul函数 mul函数,是表示矩阵M和向量V进行点乘,得到一个向量Z,这个向量Z就是对向量V进行矩阵变换后得到的值. HLSL的mul函数接受mul(V, M)或mul(M, V),要注意 ...
- 记一次Chrome冒充QQ浏览器领取奖励之行
DNF游戏十周年活动,但是看到活动页面竟然是QQ浏览器专属活动,可是对于QQ浏览器,我内心是拒绝的,所以本着能不下载就不下载的原则,当然是选择放弃它了..... 开玩笑,看到这一活动,虽然奖励不高 ...
- 学习笔记TF042:TF.Learn、分布式Estimator、深度学习Estimator
TF.Learn,TensorFlow重要模块,各种类型深度学习及流行机器学习算法.TensorFlow官方Scikit Flow项目迁移,谷歌员工Illia Polosukhin.唐源发起.Scik ...