天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

jQuery Validation插件remote驗證方式的Bug

  jQuery插件很多,其中一個重要的插件便是jQuery Validation,它的作用是對表單進行驗證,還上了jQuery官網。不過奇怪的是,最近用下來感覺有些古怪,因為好像有些死板,已有功能的應變能力還不強,甚至還有個奇怪的Bug。任何項目有Bug其實也正常,但這個Bug其實是一個文檔上已經記載了,卻沒有實現的功能,這就有些說不過去了。這個問題便出在remote驗證方式上,還好修改起來非常容易,在此記錄一下,也方便以后的參考。

  在表單驗證時,有時候會需要發一個AJAX請求去服務器上進行判斷,例如在用戶注冊時檢查用戶名是否存在。jQuery Validation插件提供了一種remote方式來實現這一點。例如我可以這樣驗證表單:

<form id="regForm">    <input type="text" name="userName" />form><script language="Javascript">    $('#regForm').validate({        'rules': {            'userName': {                'required': true,                'remote': '/account/verify'            }});script>

  這樣,jQuery Validation便會請求“/account/verify?userName=jeffz”這樣的URL來獲取true/false。可惜的是,我們在使用ASP.NET MVC時,往往會將input的name寫為特定的形式,目的是利用DefaultModelBinder的強大綁定功能。例如:

<form id="regForm">    <input type="text" id="userName" name="user.Name" />form>

  與此同時,我們用來進行驗證的Action方法,它的參數名可能也有所不同:

public ActionResult Verify(string name) { ... }

  根據文檔描述,此時我們應該這樣寫:

$('#regForm').validate({    'rules': {        'user.Name': {            'remote': {                url: '/account/verify',                data: {                    name: function() { return $("#userName").val(); }                }}}}});

  可是,從實際效果來看,jQuery還是在請求“/account/verify?user.Name=jeffz”,百思不得其解。確認在三之后只得求助于jquery.validation.js源碼,看后差點暈過去:

remote: function(value, element, param) {    if ( this.optional(element) )        return "dependency-mismatch";    ...    param = typeof param == "string" && {url:param} || param;     if ( previous.old !== value ) {        previous.old = value;        var validator = this;        this.startRequest(element);        var data = {};         data[element.name] = value; // data還是以element.name為準?        $.ajax($.extend(true, {            url: param,            mode: "abort",            port: "validate" + element.name,            dataType: "json",            data: data,            success: function(response) {                ...

  我很奇怪,不知道為什么會這樣做,這樣根本沒有起到指定參數名的作用。那么,改吧:

remote: function(value, element, param) {    if (this.optional(element))        return "dependency-mismatch";    ...    param = typeof  param == "string" && {url:param} || param;    if (previous.old !== value) {        previous.old = value;        var validator = this;        this.startRequest(element);        var data = {};        data[element.name] = value;        $.ajax($.extend(true, {            // url: param,            url: param.url,            mode: "abort",            port: "validate" + element.name,            dataType: "json",            // data: data,            data: param.data || data,            success: function(response) {                ...

  修改兩處即可,問題就此解決。只可惜,jquery.validate.min.js類似的文件只能自己進行壓縮了。

  居然會出現這樣的問題,實在令人費解。

it知識庫jQuery Validation插件remote驗證方式的Bug,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产在线精品视亚洲不卡 | 免费果冻传媒2021在线观看 | 不用播放器的黄 | 99精品热视频30在线热视频 | 纯h超级大尺度小黄文 | 色橹橹欧美在线观看视频高清 | xvideos中文版在线视频 | 好男人免费观看在线高清WWW | 亚洲高清国产拍精品影院 | 无码国产成人777爽死 | 午夜视频无码国产在线观看 | 白丝女仆被啪到深夜漫画 | 含羞草传媒在线观看 | 年轻的老师5理伦片 | 国产精品无码AV天天爽人妻蜜桃 | 精品久久香蕉国产线看观看麻豆 | 黑丝袜论坛 | 国产亚洲精品久久久久久鸭绿欲 | 驯服有夫之妇HD中字日本 | 国产跪地吃黄金喝圣水合集 | 玉林天天论坛 | 美女禁处受辱漫画 | 成人无码精品1区2区3区免费看 | 偷拍自偷拍亚洲精品 | 精品一区二区三区色花堂 | 国产自拍视频在线一区 | 强姧伦久久久久久久久 | 色橹橹欧美在线观看视频高 | 无限资源日本2019版 | 欧美巨大巨粗黑人性AAAAAA | 各种场合肉H校园1V1 | 亚洲精品久久无码AV片银杏 | 亚洲午夜AV久久久精品影院色戒 | 中国毛片网| 国产成人高清精品免费观看 | 麻豆人妻无码性色AV | av先锋影音资源男人站 | 美国色情三级欧美三级纸匠情挑 | 久久久久亚洲 | 伊人久久大香线蕉综合色啪 | 国产三级在线免费观看 |