3.3 第三方插件及使用方法
3.3.1 校验控件formValidator
在开发基于B/S架构体系风格的应用系统时,必须对用户输入的内容的进行合法性验证,常见的验证方法有非空验证、长度验证、内容合法性验证(如数字、E-mail格式等),以及业务逻辑验证(如系统中的注册用户不能相同)。
页面开发者(JavaScript开发者)往往需要编写大量的JavaScript代码来进行元素校验,而这些验证在平时开发中不停地重复书写。一般要判断的表单元素比较多,开发过程就显得枯燥无味且浏览器之间兼容性差。jQueryformValidator插件只需要进行简单的配置,无须编写代码就能实现表单的检验,使开发者重点关注业务逻辑的实现,无须关心验证的实现过程。它包括常规检验功能和可扩展校验功能。针对每个表单元素只需要写一行配置信息就能完成校验。而这些配置信息无须写入表单元素,实现了JavaScript代码和HTML代码的分离且具备跨浏览器应用的能力。
1.获取formValidator
(1)官方网站的下载地址:http://www.formvalidator.net/。
(2)使用百度搜索formValidator并获取JavaScript文件。
2.JQueryformValidator插件的API
目前formValidator支持5种校验方式:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、compareValidator(提供2个对象的比较,目前可以比较字符串和数值型)、ajaxValidator(通过AJAX到服务器上做数据校验)、regexValidator(提供可扩展的正则表达式库)、functionValidator(提供可扩展函数库来做校验),每种校验方式支持的控件类型如表3-1所示。
表3-1 formValidator各种校验方式支持的控件类型
插件提示错误有两种模式:showword和showalert,即文字提示和窗口提示。表3-2分别列出全局初始化和5种校验方式公开的属性。
表3-2 校验公开的属性
(1)inputValidator校验控件的属性如表3-3所示。
表3-3 inputValidator校验控件的属性
(2)regexValidator校验控件的属性如表3-4所示。
表3-4 regexValidator校验控件的属性
(3)ajaxValidator校验控件的属性如表3-5所示。
表3-5 ajaxValidator校验控件的属性
注意:
(1)在提交信息的时候,自动追加clientID参数,表示触发校验的控件ID。
(2)在提交信息的时候,自动追加rand参数,这是个随机数。
(3)几乎所有的属性跟$.ajax()的属性一样,请参考$.ajax()函数的帮助。
(4)functionValidator校验控件的属性如表3-6所示。
表3-6 functionValidator校验控件的属性
(5)在使用formValidator前,需对其进行初始化,初始化formValidator的函数如表3-7所示。
表3-7 formValidator公共函数
续表
【实例】 完成员工信息(姓名,工号,手机号码,E-mail)的添加功能,要求使用formValidator校验用户输入数据的合法性。
实现步骤:
(1)创建一个名为“JQuery练习”的解决方案和项目。
(2)添加一个名为EmployerController的空的MVC控件器。
(3)在EmployerController.cs文件中添加一个名为Create的动作,代码如下:
///<summary> ///添加员工动作 ///</summary> ///<returns></returns> public ActionResult Create() { return View(); }
(4)右击Create方法并选择“添加视图…”选项,利用VisualStudio2013自动生成Create视图。
(5)在“JQuery练习”项目的Scripts文件夹下添加一个名为formValidator的文件夹,用于放置所有formValidator相关的文件。
(6)将下载的formValidator压缩包(本例采用formValidator-4.0.1版)解压,将images和style文件夹及下级所有文件复制到新建的formValidator文件夹下。
(7)将formValidator-4.0.1.min.js和formValidatorRegex.js文件复制到formValidator文件夹下。
(8)切换到Create.cshtml文件,添加对formValidator文件的引用,代码如下:
<link href="~/Scripts/formValidator/style/validator.css"rel="stylesheet"/> <script src="~/Scripts/jquery-1.10.2.min.js"></script> <script src="~/Scripts/formValidator/formValidator-4.0.1.min.js"></script> <script src="~/Scripts/formValidator/formValidatorRegex.js"></script>
(9)添加校验控件的注册代码。在<head></head>标签中添加控件校验的注册代码如下:
<script type="text/javascript"> $().ready(function () { $.formValidator.initConfig({ formID: "form1", debug: false, submitOnce: true, onError: function (msg, obj, errorlist) { $("#errorlist").empty(); $.map(errorlist, function (msg) { $("#errorlist").append("<li>" +msg +"</li>") }); alert(msg); }, submitAfterAjaxPrompt: '有数据正在异步验证,请稍等……' }); }); </script>
(10)添加信息录入框,代码如下:
@using (Html.BeginForm("Create", "Employer", FormMethod.Post, new { @id= "form1" })) { <table> <tr><td><span>姓名:</span></td><td><div><input name="name" id= "name" /></div><div id="nameTip" style="width:250px"></div></td> </tr> <tr><td><span>工号:</span></td><td><div><input name="number" id="number" /></div><div id="numberTip"style="width:250px"></div> </td></tr> <tr><td><span>手机号码:</span></td><td><div><input name= "cellphone" id="cellphone" /></div><div id="cellphoneTip" style="width:250px"></div></td></tr> <tr><td><span>Email: </span></td><td><div><input name="email" id="email" /></div><div id="emailTip" style="width:250px"></div> </td></tr> <tr><td colspan="2"><input type="submit"value="提交"/></td></tr> </table> }
小贴士
上述代码中,文本输入控件后紧跟的<div>控件用于显示提示信息,如输入提示、正确提醒和错误消息。
(11)为了使信息录入控件与消息提示框在同一行,需设置它们的float属性为left,使其左向对齐。在<head></header>标签中添加样式,代码如下:
<style type="text/css"> div { float:left; } </style>
(12)在$.formValidator.initConfig代码后添加控件的校验代码如下:
//配置校验姓名控件:不能为空,长度为5~10位 $("#name").formValidator({onShow: "请输入用户名", onFocus: "用户名至少为5个字 符,最多10个字符", onCorrect: "用户名正确" }).inputValidator({ min: 5, max: 10, onError: "你输入的用户名非法,请确认" }); //配置校验工号控件:不能为空,长度为5位 $("#number").formValidator({ onShow: "请输入工号,只有输入\"00186\"才是对的", onFocus: "工号只能是5个字符", onCorrect: "工号正确" }).inputValidator({ min: 5, max: 5, onError: "你输入的工号非法,请确认" }); //配置校验手机号码控件:使用formValidatorRegex.js文件中枚举的mobile正则表达式 进行校验,长度必须为11位 $("#cellphone").formValidator({ empty: true, onShow: "请输入你的手机号码,可以 为空值", onFocus: "你要是输入了,就必须输入正确", onCorrect: "谢谢你的合作", onEmpty: "你真的不想留手机号码吗?" }).inputValidator({ min: 11, max: 11, onError: "手机号码必须是11位,请确认" }).regexValidator({ regExp: "mobile", dataType: "enum", onError: "你输入的手机号码格式不正确" }); ; //配置E-mail控件,长度为6~100位 $("#email").formValidator({ onShow: "请输入邮箱", onFocus: "邮箱长度为6~100 个字符", onCorrect: "恭喜你,输入正确", defaultValue: "@@" }).inputValidator({ min: 6, max: 100, onError: "邮箱有误,长度为6~100位,请确认!" }).regexValidator ({ regExp: "^([\\w-.]+)@@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.) +))([a-zA-Z]{2,4}|[0-9]{1,3})(]? )$", onError: "邮箱参考格式:michael@163.com" });
(13)输入界面如图3-3所示。不在控件中输入任何内容,直接单击“提交”按钮,运行界面如图3-4所示。
图3-3 输入界面
图3-4 不输入任何内容时的显示结果
3.3.2 日期控件My97DatePicker
My97DatePicker是一款基于JQuery开发的日期选择控件,它具有轻量级、兼容性好、支持多语言、使用简单等优点。
下载及帮助文档地址:http://www.my97.net/。
【实例】 当单击文本框时弹出日期控件,使用户可以从日期控件中选择日期。
实现步骤:
(1)打开“JQuery练习”解决方案。
(2)将解压后的My97DatePicker文本夹复制到“JQuery练习”项目的Scripts文件夹下。
(3)在“JQuery练习”项目中新建一个名为testDate.html的HTML文本,在<head></head>标签中引用JQuery文件及日期控件,代码如下:
<script src="Scripts/jquery-1.10.2.min.js"></script> <script src="Scripts/My97DatePicker/WdatePicker.js"></script>
(4)在testDate.html文件的<body></body>标签中添加一个文本框,代码如下:
<span>出生日期:</span><input id="txtBirthDay" onclick="WdatePicker()" />
(5)运行testDate.html文件,界面如图3-5所示。
图3-5 运行testDate.html文件的界面