jquery插件formValidator的ajaxValidator傳參數問題


最近在用formValidator插件,遇到一個問題。當我想用ajaxValidator的url傳參數時,$("#tbName").val()、document.getElementById("tbName").value$("#tbName").attr("value")都不行,后來終於找到原因了,其實是$(document).ready(function () {的原因,所以總是取到name=“”值,那怎么辦呢?

查找了很多資料,發現原來formValidator本事已經對url做處理了,默認把tbName這個ID作為參數名,

只要在checkuser.ashx調用context.Request.Params["tbName"].ToString().Trim()取值就行,已經驗證過,此方法一定有效,示例代碼如下:

JavaScript:

$(document).ready(function () {
    $.formValidator.initConfig({ formID: "form1", theme: "baidu", debug: false, submitOnce: true, 
            onError: function (msg, obj, errorlist) {
                $.map(errorlist, function (msg) {

                });
                alert(msg);
            },
            ajaxPrompt: '有數據正在異步驗證,請稍等...'
        });
        $("#tbName").formValidator({ onShow: "請輸入用戶名", onFocus: "用戶名至少5個字符,最多10個字符", onCorrect: "該用戶名可以注冊" }).inputValidator({ min: 5, max: 10, onError: "你輸入的用戶名非法,請確認" })//.regexValidator({regExp:"username",dataType:"enum",onError:"用戶名格式不正確"})
        .ajaxValidator({
            dataType: "json",
            async: true,
            url: "action/checkuser.ashx?command=check&key=" + $("#tbName").attr("value"),
            success: function (data) {
                if (data=="1") return true;
                if (data=="0") return false;
                return false;
            },
            buttons: $("#button"),
            error: function (jqXHR, textStatus, errorThrown) { alert("服務器沒有返回數據,可能服務器忙,請重試" + errorThrown); },
            onError: "該用戶名已注冊,請更換用戶名",
            onWait: "正在對用戶名進行合法性校驗,請稍候..."
        }).defaultPassed();
});

checkuser.ashx:

public void ProcessRequest (HttpContext context) {
        switch (context.Request.Params["command"].ToString())
        {
            case "check": CheckUser(context); break;
        }
    }
    
    public void CheckUser(HttpContext context)
    {
        string res = "1";
        StringBuilder strBul = new StringBuilder();
        string name = context.Request.Params["tbName"].ToString().Trim();
        //注:context.Request.Params["key"].ToString()為“”,此傳值無效。
        if(name.Equals("12345a")){res="0";}
        strBul.Append(res);
        context.Response.Write(strBul);
    }

注意:此方法只能在this.ID即本控件(這里是$("#tbName")),才能在ashx里動態取值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM