源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ASP.NET中实现jQuery Validation-Engine的Ajax验证

  • 时间:2020-10-15 00:22 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ASP.NET中实现jQuery Validation-Engine的Ajax验证
见下图: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100119_0_898.jpg[/img] 验证的例子:[url=http://www.position-relative.net/creation/formValidator/]http://www.position-relative.net/creation/formValidator/[/url] 官方地址: [url=http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/]http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/[/url] 这个插件支持大部分的浏览器,但由于有使用到了css3的阴影和圆角样式,所以在IE浏览器下无法看到圆角和阴影效果(IE 9 支持圆角效果)。 本文主要内容是:在ASP.NET中实现AJAX验证功能。官方给出的Ajax验证例子是PHP的实例,笔者在网站查阅的资料基本都是翻译的官网,在ASP.NET中实现普通验证是没有问题的。但是,不能实现Ajax验证,这应该是个bug。笔者研究了插件代码,给出我自己的一种解决方案,要在ASP.NET实现这种效果,必须修改官方的主JS文件,当然同学们可以根据笔者的思路进行挖掘,欢迎补充!实现效果见下图: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100120_1_96498.jpg[/img] 具体怎么使用这个插件,用搜索引擎能找到很多答案,笔者在这里简单啰嗦一下,照顾下新同学。首先我们的下载插件包,上面是官方的下载地址。 插件包我们用的主要是三个文件: jquery.validationEngine.js //插件主JS文件 jquery.validationEngine-cn.js //验证规则JS文件 validationEngine.jquery.css //样式表文件 当然,这个插件是jQuery的第三方插件,所以先要应用jquery的核心库,笔者测试jquery 1.6.1 是没有问题的。 1.引入jquery和插件js、css文件 <link href="Scripts/Validation-Engine/css/validationEngine.jquery.css" rel="stylesheet" type="text/css" /> <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script> <script src="Scripts/Validation-Engine/js/jquery.validationEngine.js" type="text/javascript"></script> <script src="Scripts/Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js" type="text/javascript"></script> 2.初始化插件,在页面head区域加入如下代码:
[url=Scripts/Validation-Engine/css/validationEngine.jquery.css]<script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script> <script src="Scripts/Validation-Engine/js/jquery.validationEngine.js" type="text/javascript"></script> <script src="Scripts/Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#formID").validationEngine({ ajaxFormValidation: true }); $.ajax({ type: "get", url: "AjaxBackstage/AjaxValidation.ashx", cache: false, data: { "fieldId": "Text4", "fieldValue": "haha", "extraData": "nowtime2012" }, dataType: "json", error: function (XMLHttpRequest, textStatus, errorThrown) { alert("错误!XMLHttpRequest.status=" + XMLHttpRequest.status + ",XMLHttpRequest.readyState=" + XMLHttpRequest.readyState + ",textStatus=" + textStatus); }, success: function (json) { alert("你好,成功了!"+json.jsonValidateReturn[0] + ", " + json.jsonValidateReturn[1] + "," + json.jsonValidateReturn[2]); } }); }); </script> </head> <body> <form id="formID" runat="server"> <h2> jQuery - Validation-Engine - Ajax验证 </h2> <br /> <p> Ajax:<input id="Text3" type="text" class="validate[required,ajax[ajaxUsers]]" /> </p> <p> Ajax:<input id="Text4" type="text" class="validate[ajax[ajaxUsers]]"/> </p> <p> Ajax:<input id="Text1" type="text" class="validate[required]"/> </p> </form> </body> </html>
url: "AjaxBackstage/AjaxValidation.ashx" 这里指向刚才创建的一般处理程序 调试结果返回的是正确的json格式的数据会执行 succes下面的函数,否则执行error下面的函数,下面看一下效果 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100120_2_74710.jpg[/img]   返回出现错误时,是无法完成Validation-Engine的AJAX验证的。这里显示显示错误是"pars error" 编译器错误,根本原因还是返回数据的问题。下面是后台处理程序的返回数据的部分,笔者测试,字段不能用单引号,否则见上图效果,所以这里用传递的数据用双引号引起来。 数据请求成功: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100120_3_33445.jpg[/img] 5.3 第三步,根据上面的例子给jquery.validationEngine.js文件动动“手术”,参考上面第5条。jsonValidateReturn ?对,关键就在这个地方,官方版本是PHP的例子在传递的json数据有点小区别,导致json[0]获取不到数据。所以在本例中json.jsonValidateReturn[index]获取的数据才正常。当然你不喜欢这个名称jsonValidateReturn也可以自己定义一个名称,但前提必须是后台传递数据时的名称和这里的名称是一致的。
[u]复制代码[/u] 代码如下:
// 异步调用成功,数据是从服务器的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]; //改动的地方 if (!status) { // Houston,我们有一个问题 - 显示一个红色的提示 options.ajaxValidCache[errorFieldId] = false; options.isError = true;
5.4 第四步,在语言文件中自定义规则,官方语言包中有中文语言文件调用jquery.validationEngine-zh_CN.js,这里笔者添加一个“ajaxUsers”规则。
[u]复制代码[/u] 代码如下:
// --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings "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": "* 正在确认名称是否有其他人使用,请稍等。" },
OK,试试看验证是不是能成功了呢。。。 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100121_4_57591.jpg[/img] 最后,总结出来一点经验,拿出来分享。“从事物的本质中寻找问题的答案!”。 作者:skylinetour
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部