跳转到主内容
极星编程网:以代码为星,赴技术山海!

jQuery-Validation-Engine使用方法详解

今天下午搞客户端验证,自己写的效果太差,于是在网上找,发现jquery validation engine 这个插件还是蛮不错的,可扩展性很强,简单易用。

非常适合form表单类型的验证。

效果还是不错滴。

下面是我做的效果。

[caption id="attachment_307" align="alignnone" width="495"] jQuery-Validation-Engine验证效果图[/caption]   关于简单的例子可以参考官方网站的例子: http://www.position-relative.net/creation/formValidator/ 稍微讲解下,主要是在class样式中,添加validate标签,内部可以设置规则。

中文规则默认在(/js/languages/jquery.validationEngine-zh_CN.js)中,如果扩展规则也很简单,只需要依葫芦画瓢就ok了,不详细讲,可参考网上的例子。

eg: class="validate[required,minSize[6],maxSize[20]] text-input" 关键是异步验证的问题。

发现不知道为什么,在asp.net下,请求一般处理程序的方式,始终没有返回结果。

于是网上找了下解决方案。

主要是需要修改jquery.validationEngine.js文件。

官方版本是PHP的例子在传递的json数据有点小区别,导致json[0]获取不到数据。

所以在本例中json.jsonValidateReturn[index]获取的数据才正常。

当然你不喜欢这个名称jsonValidateReturn也可以自己定义一个名称,但前提必须是后台传递数据时的名称和这里的名称是一致的。

[code lang="javascript"] // 异步调用成功,数据是从服务器的JSON答案 // 改动地方,原来jvar errorFieldId =json[0] 在asp.Net中是获取不到数据的 // 改成下面的方式,注意jsonValidateReturn这里名称定死了,在AJAX后台返回数据时必须和jsonValidateReturn一致 // {"jsonValidateReturn":["validateId","validateError","true"]} var errorFieldId = json.jsonValidateReturn[0]; //改动的地方 //var errorField = $($("#" + errorFieldId)[0]); var errorField = $($("input[id='" + errorFieldId +"']")[0]); // 确保我们找到元素 if (errorField.length == 1) { var status = json.jsonValidateReturn[2]; //改动的地方 // 从服务器读取的可选MSG var msg = json.jsonValidateReturn[1]; //改动的地方 [/code] 当你这样设置过以后就解决了相当大的问题。

其他都是小case了。

只需要在语言文件中自定义规则,官方语言包中有中文语言文件调用jquery.validationEngine-zh_CN.js,这里笔者添加一个“ajaxUsers”规则。

[code lang="javascript"] "ajaxUsers": { "url": "AjaxBackstage/AjaxValidation.ashx", // "validate.action", "validate.action"ajax验证用户名,会post如下参数:validateError ajaxUser;validateId user;validateValue cccc "alertTextOk": "* 帐号可以使用.", "alertTextLoad": "* 检查中, 请稍后...", "alertText": "* 帐号不能使用." }, "ajaxUserCall": { "url": "ajaxValidateFieldUser", // you may want to pass extra data on the ajax call //"extraData": "name=eric", "alertText": "* 此名称已被其他人使用", "alertTextLoad": "* 正在确认名称是否有其他人使用,请稍等。

" }, [/code] 下面是我的aspx页面的代码: [code lang="csharp"] <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm5.aspx.cs" Inherits="MyDemo.WebForm5" %> $(document).ready(function () { $("#form1").validationEngine({ inlineValidation: false, //在这里修改 success: false, promptPosition: "centerRight", failure: function () { } }); });

Ajax: Ajax2: Ajax3:
[/code] 对了,还有一点很重要,就是一般处理程序的输出格式,算了,把一般处理程序的代码也贴出来。

[code lang="csharp"] public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; HttpContext _content = HttpContext.Current; string validateId = _content.Request["fieldId"]; string validateValue = _content.Request["fieldValue"]; string validateError = _content.Request["extraData"]; string str; if (validateValue == "abc") str = "{\"jsonValidateReturn\":[\"" + validateId + "\",\"" + validateError + "\",true]}"; else str = "{\"jsonValidateReturn\":[\"" + validateId + "\",\"" + validateError + "\",false]}"; context.Response.Write(str); } [/code] 转载于:https://www.cnblogs.com/woaic/archive/2013/02/25/3942825.html

相关文章