<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ASP.NET中實現jQuery Validation-Engine的Ajax驗證實現代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:42:22
        文檔

        ASP.NET中實現jQuery Validation-Engine的Ajax驗證實現代碼

        ASP.NET中實現jQuery Validation-Engine的Ajax驗證實現代碼:見下圖: 驗證的例子:http://www.position-relative.net/creation/formValidator/ 官方地址: http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/
        推薦度:
        導讀ASP.NET中實現jQuery Validation-Engine的Ajax驗證實現代碼:見下圖: 驗證的例子:http://www.position-relative.net/creation/formValidator/ 官方地址: http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

        見下圖:

        驗證的例子:http://www.position-relative.net/creation/formValidator/

        官方地址: http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

        這個插件支持大部分的瀏覽器,但由于有使用到了css3的陰影和圓角樣式,所以在IE瀏覽器下無法看到圓角和陰影效果(IE 9 支持圓角效果)。

        本文主要內容是:在ASP.NET中實現AJAX驗證功能。官方給出的Ajax驗證例子是PHP的實例,筆者在網站查閱的資料基本都是翻譯的官網,在ASP.NET中實現普通驗證是沒有問題的。但是,不能實現Ajax驗證,這應該是個bug。筆者研究了插件代碼,給出我自己的一種解決方案,要在ASP.NET實現這種效果,必須修改官方的主JS文件,當然同學們可以根據筆者的思路進行挖掘,歡迎補充!實現效果見下圖:

        具體怎么使用這個插件,用搜索引擎能找到很多答案,筆者在這里簡單啰嗦一下,照顧下新同學。首先我們的下載插件包,上面是官方的下載地址。
        插件包我們用的主要是三個文件:
        代碼如下:

        jquery.validationEngine.js //插件主JS文件
        jquery.validationEngine-cn.js //驗證規則JS文件
        validationEngine.jquery.css //樣式表文件

        當然,這個插件是jQuery的第三方插件,所以先要應用jquery的核心庫,筆者測試jquery 1.4.2 是沒有問題的。
        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區域加入如下代碼:
        $(document).ready(function() { $("#formID").validationEngine() ; //formID是你要驗證的表單ID })
        3.添加表單元素驗證規則,常用的驗證規則上面官方地址有說明,不過是英文的。還可以百度一下,這個不是難點。
        <input id="Text3" type="text" class="validate[required,ajax[ajaxUsers]]" />
        多個驗證多逗號隔開
        4.驗證觸發
        代碼如下:

        $("#formID").validationEngine({
        inlineValidation: false, //在這里修改
        success : false,
        alidationEventTriggers:"keyup blur", //這里增加了個keyup,也就是鍵盤按鍵起來就觸發驗證
        promptPosition: "topRight", // 有5種模式 topLeft, topRight, bottomLeft, centerRight, bottomRight
        failure : function() { callFailFunction() }
        })

        5.Ajax驗證,好了,這里是才是問題所在,在分析問題之前我們先看下Validation-Engine主JS文件是怎樣實現Ajax驗證的。打開jquery.validationEngine.js文件,Ctrl+F用查找"$.ajax"文檔中能找到兩處,我們要修改的是第二處,見下面折疊的官方源代碼,
        官方jquery.validationEngine.js 文件中的關鍵代碼
        代碼如下:

        官方jquery.validationEngine.js 文件中的關鍵代碼
        $.ajax({
        type: options.ajaxFormValidationMethod,
        url: rule.url,
        cache: false,
        dataType: "json",
        data: "fieldId=" + field.attr("id") + "&fieldValue=" + field.val() + "&extraData=" + extraData + "&" + extraDataDynamic,
        field: field,
        rule: rule,
        methods: methods,
        options: options,
        beforeSend: function() {
        // build the loading prompt
        var loadingText = rule.alertTextLoad;
        if (loadingText)
        methods._showPrompt(field, loadingText, "load", true, options);
        },
        error: function(data, transport) {
        methods._ajaxError(data, transport);
        },
        success: function(json) {
        // asynchronously called on success, data is the json answer from the server
        var errorFieldId = json[0];
        //var errorField = $($("#" + errorFieldId)[0]);
        var errorField = $($("input[id='" + errorFieldId +"']")[0]);
        // make sure we found the element
        if (errorField.length == 1) {
        var status = json[1];
        // read the optional msg from the server
        var msg = json[2];
        if (!status) {
        // Houston we got a problem - display an red prompt
        options.ajaxValidCache[errorFieldId] = false;
        options.isError = true;
        // resolve the msg prompt
        if(msg) {
        if (options.allrules[msg]) {
        var txt = options.allrules[msg].alertText;
        if (txt)
        msg = txt;
        }
        }
        else
        msg = rule.alertText;
        methods._showPrompt(errorField, msg, "", true, options);
        } else {
        if (options.ajaxValidCache[errorFieldId] !== undefined)
        options.ajaxValidCache[errorFieldId] = true;
        // resolves the msg prompt
        if(msg) {
        if (options.allrules[msg]) {
        var txt = options.allrules[msg].alertTextOk;
        if (txt)
        msg = txt;
        }
        }
        else
        msg = rule.alertTextOk;
        // see if we should display a green prompt
        if (msg)
        methods._showPrompt(errorField, msg, "pass", true, options);
        else
        methods._closePrompt(errorField);
        }
        }
        errorField.trigger("jqv.field.result", [errorField, options.isError, msg]);
        }
        });

        充上面分析我得出結論,這里的AJAX驗證也是基于jQuery的$.AJAX()方法,為了找到無法驗證的問題,寫了一個$.AJAX()來驗證jquery.validationEngine.js中的AJAX方法。
        5.1 第一步,創建后臺處理程序,這里創建一般處理程序為例子,代碼如下:
        代碼如下:

        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);
        }

        這里注意了:在AJAX驗證的時候,會POST三個核心參數到后臺,fieldId、fieldValue、extraData,當然還可自定義其它的參數傳遞過來
        5.2 第二步,創建一個aspx頁面仿照Validation-Engine的JS寫個AJAX請求,代碼如下:
        代碼如下:

        演示頁面
        <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FormValidation.aspx.cs" Inherits="DemoWeb.FormValidation" %>
        <!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>jQuery表單驗證 - Validation-Engine</title>
        <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>
        <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下面的函數,下面看一下效果

         
        返回出現錯誤時,是無法完成Validation-Engine的AJAX驗證的。這里顯示顯示錯誤是pars error 編譯器錯誤,根本原因還是返回數據的問題。下面是后臺處理程序的返回數據的部分,筆者測試,字段不能用單引號,否則見上圖效果,所以這里用傳遞的數據用雙引號引起來。
        代碼如下:


        string str;
        if (validateValue == "abc")
        str = "{\"jsonValidateReturn\":[\"" + validateId + "\",\"" + validateError + "\",true]}";
        else
        str = "{\"jsonValidateReturn\":[\"" + validateId + "\",\"" + validateError + "\",false]}";
        //if (validateValue == "abc")
        // str = "{'jsonValidateReturn':['" + validateId + "','" + validateError + "',true]}";
        //else
        // str = "{'jsonValidateReturn\":['" + validateId + "','" + validateError + "',false]}";

        數據請求成功:

        5.3 第三步,根據上面的例子給jquery.validationEngine.js文件動動“手術”,參考上面第5條。jsonValidateReturn ?對,關鍵就在這個地方,官方版本是PHP的例子在傳遞的json數據有點小區別,導致json[0]獲取不到數據。所以在本例中json.jsonValidateReturn[index]獲取的數據才正常。當然你不喜歡這個名稱jsonValidateReturn也可以自己定義一個名稱,但前提必須是后臺傳遞數據時的名稱和這里的名稱是一致的。
        代碼如下:


        // 異步調用成功,數據是從服務器的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”規則。
        代碼如下:


        // --- 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,試試看驗證是不是能成功了呢。。


        最后,總結出來一點經驗,拿出來分享?!皬氖挛锏谋举|中尋找問題的答案!”。
        說明:本文系原創,轉載請注明出處!http://www.cnblogs.com/skylinetour/

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET中實現jQuery Validation-Engine的Ajax驗證實現代碼

        ASP.NET中實現jQuery Validation-Engine的Ajax驗證實現代碼:見下圖: 驗證的例子:http://www.position-relative.net/creation/formValidator/ 官方地址: http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/
        推薦度:
        標簽: 驗證 net ajax
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲视频在线不卡| 亚洲av女电影网| 亚洲精品永久在线观看| 色se01短视频永久免费| 亚洲人成电影青青在线播放| 免费A级毛片无码视频| 久久久久久亚洲Av无码精品专口 | 成人免费的性色视频| 国产v片免费播放| 亚洲欧美日韩综合久久久久| 国产麻豆剧传媒精品国产免费| www.亚洲精品.com| 人与动性xxxxx免费| 亚洲午夜福利AV一区二区无码| 国产免费AV片在线观看| 久久精品亚洲日本佐佐木明希| 最好看最新的中文字幕免费| 亚洲AV成人无码天堂| 精品无码国产污污污免费| 青青草97国产精品免费观看 | www一区二区www免费| 精品亚洲永久免费精品| 久久国产免费福利永久| 亚洲av日韩精品久久久久久a| 国产乱人免费视频| 黄网站免费在线观看| 亚洲国产片在线观看| 免费大片在线观看网站| 国产偷伦视频免费观看| 亚洲乱码一二三四五六区| 全亚洲最新黄色特级网站| 久草福利资源网站免费| 亚洲三级在线观看| 亚洲视频一区二区| 亚洲人成免费电影| 欧洲美女大片免费播放器视频| 亚洲AV成人片色在线观看| 免费无码成人AV片在线在线播放| 久久久久久国产a免费观看不卡| 亚洲国产日韩在线人成下载| 亚洲国产一区二区三区|