ASP.NET MVC Jquery Validate 表单验证的多种方式

时间:2022-09-07 16:25:13

在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug 。但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升。在开发过程中我们可以不借助 JS 库,自己去手写 JS 验证,但是如果是团队项目,为了达到代码的统一还是调用统一的 表单验证方式 比较合适。下面介绍在 ASP.NET MVC中结合Jquery Validate 进行表单验证的方式。首先推荐一篇关于Jquery Validate 如何使用的博文,写的很详细。http://www.cnblogs.com/hejunrex/archive/2011/11/17/2252193.html。而我将要介绍的是如何结合Jquery Validate 进行表单验证。

一、Jquery.Validate 中的用法概述以及重要的用法

1.普通的表单结合 Jquery.Validate 的验证方式

以验证用户名、年龄、邮编为例。html表单如下

     <form id="addForm" method="post" action="/JQValidate/AddForm">
<div>
姓名:
<input type="text" name="txtName" id="txtName" />
<span class="errorMsg">错误信息放置的位置</span>
<br />
年龄:
<input type="text" name="txtAge" />
<span class="errorMsg"></span>
<br />
邮政编码:
<input type="text" name="txtZipCode" />
<span class="errorMsg"></span>
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>

Jquery.Validate JS 验证

 <script src="~/Scripts/jquery-1.7.1.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script type="text/javascript">
$(function () {
// 表单验证
formValidate();
}); var formValidate = function () {
// 添加自定义校验(邮政编码验证)
jQuery.validator.addMethod("isZipCode", function (value, element) {
var zipCode = /^[0-9]{6}$/;
return this.optional(element) || (zipCode.test(value));
}, "请正确填写您的邮政编码"); $("#addForm").validate({ // #JQForm是form表单的ID
rules: {
txtName: { // 要验证的表单的id
required: true, // 是否是必填项
minlength: 2, // 最小长度
remote: "/JQValidate/ValidateName",// 返回 true 就会出现错误信息
},
txtAge: {
required: true,
range: [18, 30]
},
txtZipCode: {
required: true,
isZipCode: true,
},
},
messages: {// 如果没有给属性错误提示,就会用默认提示
txtName: {
required: "请输入会员名称", // 如果提交的时候没有填写提示的文字
minlength: "会员名称的长度不能小于2位", // 如果输入的长度小于2提示的文字
remote: "用户名重复"
},
txtAge: {
required: "年龄不能为空",
range: "年龄范围是18~30"
},
txtZipCode: {
required: "邮政编码不能为空",
},
},
errorPlacement: function (error, element) { // 自定义错误信息放置的位置
error.appendTo(element.next("span"));
},
})
};
</script>

2.添加自定义校验

以添加一个自定义的邮编为例

        // 添加自定义校验(邮政编码验证)
jQuery.validator.addMethod("isZipCode", function (value, element) {
var zipCode= /^[0-9]{6}$/;
return this.optional(element) || (zipCode.test(value));
}, "请正确填写您的邮政编码");

3.把错误消息放到自定义的区域

有时候美工设计的静态页面我们开发人员为了保持其html结构不被改变,就要自定义错误信息的位置。如美工的html表单结构:

       姓名:
<input type="text" name="txtName" id="txtName" />
<span class="errorMsg">错误信息放置的位置</span>
      $("#addForm").validate({  // #JQForm是form表单的ID
rules: {},
messages: {},
errorPlacement: function (error, element) { // 自定义错误信息放置的位置
error.appendTo(element.next("span"));
},
})

4.远程校验

返回值为true 就提示错误信息,否则不提示

 remote: "/JQValidate/ValidateName",// 返回 true 就会出现错误信息

注意如果不传参数,默认是把当前校验的值传到后台校验,如果还要传入其他参数通过这种形式(dataType必须是json类型)

 remote: { // 默认会把当前验证的值传到后台验证,如果还需要传输其他的参数在data中添加
url: "/JQValidate/ValidateName",
type: "post",
data: { "testData": "testName" },
dataType: "json", // 此处返回类型必须是JSON
}

二、Jquery.Validate 结合Ajax.BeginForm 验证方式,实现验证成功后的异步提交表单

1.引入 JS

     <script src="~/Scripts/jquery-1.7.1.js"></script>
@*Ajax.BeginForm 需要的js 文件*@
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>

2.

普通的表单结合Jquery.Validate提交方式是非异步的,用Jquery.Validate 结合Ajax.BeginForn 验证方式,实现验证成功后的异步提交表单。如果让Jquery.Validate去验证表单就必须用<form></form>包裹,也就必须获取到<form></form>的id。如果没有设置要提交的表单id运行后查看网页源代码我们会发现ASP.NET MVC 默认会给我们分配一个form id,查看源文件如图

ASP.NET MVC Jquery Validate 表单验证的多种方式

如果我们通过id=“form0”去验证也可以,但是如果一个页面不止一个表单就很难分清要验证哪个form表单了。我们看下Ajax.BeginForm的参数重载是可以设置form表单的属性的。如图

ASP.NET MVC Jquery Validate 表单验证的多种方式

所以表单改成如下方式就行了(最后一个参数加上 new { @id = "AddForm" })

 @using (Ajax.BeginForm("AddForm", "JQValidate", new { }, new AjaxOptions() { HttpMethod = "post", OnBegin = "ajaxFormOnBegin", OnSuccess = "afterOnSuccess", OnFailure = "afterOnFailure", UpdateTargetId = "UpdateTargetHiddenID" }, new { @id = "AddForm" }))
{
<div>
姓名:
<input type="text" name="txtName" id="txtName" />
<span class="errorMsg">错误信息放置的位置</span>
<br />
年龄:
<input type="text" name="txtAge" />
<span class="errorMsg"></span>
<br />
邮政编码:
<input type="text" name="txtZipCode" />
<span class="errorMsg"></span>
</div>
<div>
<input type="submit" value="提交" />
</div>
}

三、Jquery.Validate 结合 非 form 表单提交的验证方式

有时候页面上不仅是表单数据,也有表格等其他数据,而不想通过form表单都提交到后台,但是又想通过Jquery.Validate方式验证。那么我们可以这样做。

表单:

     <form>
<div>
姓名:
<input type="text" name="txtName" id="txtName" />
<span class="errorMsg">错误信息放置的位置</span>
<br />
年龄:
<input type="text" name="txtAge" />
<span class="errorMsg"></span>
<br />
邮政编码:
<input type="text" name="txtZipCode" />
<span class="errorMsg"></span>
</div>
<div>
<input type="button" value="提交" onclick="javascript: btnSubmit();" />
</div>
</form>

Jquery.Validate 中有一个方法是valid(),是用来判断表单是否验证通过的,同时会进行校验是否合法。

Jquery.Validate验证:

 <script type="text/javascript">
$(function () {
// 表单验证
formValidate();
}); var formValidate = function () {
// 添加自定义校验(邮政编码验证)
jQuery.validator.addMethod("isZipCode", function (value, element) {
var zipCode = /^[0-9]{6}$/;
return this.optional(element) || (zipCode.test(value));
}, "请正确填写您的邮政编码"); $("#addForm").validate({ // #JQForm是form表单的ID
rules: {
txtName: { // 要验证的表单的id
required: true, // 是否是必填项
minlength: 2, // 最小长度
remote: "/JQValidate/ValidateName",// 返回 true 就会出现错误信息
},
txtAge: {
required: true,
range: [18, 30]
},
txtZipCode: {
required: true,
isZipCode: true,
},
},
messages: {// 如果没有给属性错误提示,就会用默认提示
txtName: {
required: "请输入会员名称", // 如果提交的时候没有填写提示的文字
minlength: "会员名称的长度不能小于2位", // 如果输入的长度小于2提示的文字
remote: "用户名重复"
},
txtAge: {
required: "年龄不能为空",
range: "年龄范围是18~30"
},
txtZipCode: {
required: "邮政编码不能为空",
},
},
errorPlacement: function (error, element) { // 自定义错误信息放置的位置
error.appendTo(element.next("span"));
},
})
};
</script>

Jquery.Validate验证是否通过,通过就往后台提交数据,没有通过会出现错误提示:

     // 非submit按钮提交方式
var btnSubmit = function () {
// 检测表单是否验证通过 并进行表单验证
var validateState = $("#addForm").valid();
if (!validateState) {
return false;
} // 往后台提交数据,当然还可以传入其他你想提交的数据
$.ajax({
url: "/JQValidate/AddForm",
type: "post",
dataType: "text",
data:{txtName:$("#txtName").val()},
success: function (data) {
alert(data);
}
}); };

总结

通过以上这几种结合Jquery.Validate表单验证提交方式,应该可以覆盖到我们日常开发过程中的表单验证方式,如果你还有更好的方式不妨大家一起交流分享。

下一篇博客将是介绍ASP.NET MVC 通过 模型注解方式进行表单验证。

ASP.NET MVC Jquery Validate 表单验证的多种方式的更多相关文章

  1. &lbrack;转&rsqb;ASP&period;NET MVC Jquery Validate 表单验证的多种方式介绍

    在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...

  2. Jquery Validate 表单验证的多种方式

    ASP.NET MVC Jquery Validate 表单验证的多种方式 在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体 ...

  3. jQuery Validate 表单验证 — 用户注册简单应用

    相信很多coder在表单验证这块都是自己写验证规则的,今天我们用jQuery Validate这款前端验证利器来写一个简单的应用. 可以先把我写的这个小demo运行试下,先睹为快.猛戳链接--> ...

  4. jquery validate表单验证插件-推荐

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  5. jquery validate表单验证插件

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  6. jQuery Validate 表单验证

    在做网页表单时时常需要在客户端对表单填写的数据进行验证一番才能提交,我们可以通过自己编写JavasScript代码来验证,但是有时数据量过多时就会有些难度了.基于jQuery的jquery.valid ...

  7. jQuery Validate 表单验证插件----自定义一个验证方法

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二.引入依赖包 <script src="../../scripts/j ...

  8. jQuery Validate 表单验证插件----自定义校验结果样式

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二.引入依赖包 <script src="../../scripts/j ...

  9. jQuery Validate 表单验证插件----通过name属性来关联字段来验证,改变默认的提示信息,将校验规则写到 js 代码中

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二. 添加一个另外一个插件jquery.validate.messages_cn.js. ...

随机推荐

  1. CSS3选择器&colon;nth-child和&colon;nth-of-type之间的差异

    CSS3选择器:nth-child和:nth-of-type之间的差异 这篇文章发布于 2011年06月21日,星期二,23:04,归类于 css相关. 阅读 57546 次, 今日 143 次 by ...

  2. iframe框架默认占满整个屏幕

    <script language="JavaScript"> if (window != top) { top.location.href = location.hre ...

  3. C文件操作(转载)

    /*1.文件的打开(fopen函数)fopen函数用来打开一个文件,其调用的一般形式为:文件指针=fopen(文件名,文件操作方式):例如:FILE *fpinfpin=fopen("c:\ ...

  4. c语言中的堆、栈和内存映射

    Code Area(代码区):程序代码指令.常量字符串,只可读. Static Area(静态区):存放全局变量/常量.静态变量/常量. 该区域的大小在程序一加载进内存的时候就已固定,但是静态变量的值 ...

  5. P2921 &lbrack;USACO08DEC&rsqb;在农场万圣节Trick or Treat on the Farm

    对于一个牛,它存在两种状态:1.处于联通分量 2.不处于联通分量.对于处于联通分量的牛,求出联通分量的大小:对于不处于联通分量的牛,求出其距离联通分量的路程+联通分量大小. 不同的联通分量,染上不同的 ...

  6. 编程菜鸟的日记-《软件测试》Ron Patton著-读书笔记

    第一部分 软件测试综述 第一章 软件测试的背景 1.软件测试员的目标:尽可能早地找到软件缺陷,并确保其能得以修复. 2.仅仅测试程序是否按预期方式运行有何问题:程序能完好的跑通并不代表软件不存在缺陷, ...

  7. Delphi Create&lpar;nil&rpar;&comma; Create&lpar;self&rpar;&comma; Create&lpar;Application&rpar;的区别

    最近的项目中经常在程序中动态创建控件,势必用到Create. 但是随之而来的问题就是动态创建的控件是否可以正确的释放内存? 以及 Create(nil), Create(self), Create(A ...

  8. openstack Q版部署-----nova服务配置-控制节点(5)

    一.创建数据库(控制节点) 创建数据库以及用户: CREATE DATABASE nova_api; CREATE DATABASE nova; CREATE DATABASE nova_cell0; ...

  9. openCV 备忘

    yum install python-devel numpy cmake gcc gcc-c++yum install gtk2-devel libdc1394-devel libv4l-devel ...

  10. glide使用

    glide在github地址:https://github.com/bumptech/glide 1.添加依赖(最好看官网,因为有时候添加依赖的会有轻微改动,版本也会一直更新) repositorie ...