zoukankan      html  css  js  c++  java
  • jQueryValidationEngine使用方法详解

    今天下午搞客户端验证,自己写的效果太差,于是在网上找,发现jquery validation engine 这个插件还是蛮不错的,可扩展性很强,简单易用。非常适合form表单类型的验证。效果还是不错滴。下面是我做的效果。 [caption id="attachment_307" align="alignnone" width="495"]jQuery-Validation-Engine验证效果图 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="jqueryValidate/js/jquery-1.8.2.min.js" type="text/javascript"></script> <script src="jqueryValidate/js/jquery.validationEngine.js" type="text/javascript"></script> <link href="jqueryValidate/css/validationEngine.jquery.css" rel="stylesheet" type="text/css" /> <script src="jqueryValidate/js/languages/jquery.validationEngine-zh_CN.js" type="text/javascript"></script> <link href="jqueryValidate/css/template.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $(document).ready(function () { $("#form1").validationEngine({ inlineValidation: false, //在这里修改 success: false, promptPosition: "centerRight", failure: function () { } }); }); </script> </head> <body> <form id="form1" runat="server"> <div> Ajax:<input id="Text1" type="text" class="validate[required,ajax[ajaxUsers]]" /><br /> Ajax2:<input id="Text2" type="text" class="validate[ajax[ajaxUsers]]" /><br /> Ajax3:<input id="Text3" type="text" class="validate[required]" /><br /> </div> </form> </body> </html> [/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]
    写个博客不容易,请转载的时候备注下原文出处,谢谢
    作者:keepnode
    博客地址:http://www.cnblogs.com/woaic
    每件事到最后都是好事,如果不是好事,说明还没有到最后
    =========================
  • 相关阅读:
    列表常用的方法
    python 三级联动
    tkinter--gui工具:MD5
    python PublicMethod方法如下<LoggerBase有使用>
    python config/config.ini 配置文件如下
    python browser engine封装
    python 页面基类 Page封装 →driver层的封装(最底层的封装Page)
    Eclipse配置maven环境
    appium 多个测试用例<多个 **.py文件>,只执行一次app <Python 3.8.1>
    python3版本使用weditor报错,解决方案
  • 原文地址:https://www.cnblogs.com/woaic/p/3942825.html
Copyright © 2011-2022 走看看