2017-06-29 18 views
0

我有一個表單,當按下submit和表單字段propBacklink有一個值時,以下3個字段(X,Y,Z)也被驗證。這是無論他們的價值,因爲他們只讀。 Ajax調用根據Ajax調用中的變量返回true或false。jQuery驗證接下來的3個表單字段onkeyup當填充前一個表單時

我的問題是,我如何強制fieldfield propBacklink onkeyup的字段(X,Y,Z)驗證?

propBacklink: { 
 
    required: false, 
 
    url: true, 
 
    remote: { 
 
\t url: "backlinkInDB.php", 
 
\t type: "post" 
 
    }, 
 
    rules: { 
 
\t CheckNextFields: true 
 
    } 
 
}, 
 

 
$.validator.addMethod("CheckNextFields", function(value) { 
 

 
\t this.element($("[name='X']")).validate(); 
 
\t this.element($("[name='Y']")).validate(); 
 
\t this.element($("[name='Z']")).validate(); 
 

 
});

+0

如果缺少代碼,則無法運行代碼片段。換句話說,JavaScript沒有相關的HTML就沒用了。編輯刪除片段。 – Sparky

+0

你的問題不清楚。默認情況下,「keyup」和「focusout」也會觸發驗證。您是否在詢問如何基於其他事件觸發驗證? – Sparky

+0

哦,對不起。希望這個補充說明得更好:的確,現在有焦點的表單域在onkeyup上得到驗證。但我也希望字段X,Y,Z被驗證onkeyup的形式提交A. – Peps

回答

0

由於您的OP不包含任何代碼,我的回答將不包含代碼...

我怎麼能力場(X,Y,Z的驗證)formfield propBacklinkonkeyup

默認情況下,該插件會評估提交的click整個窗體,並分別對keyup並在每個領域focusout(上clickradiocheckboxselect

既然你想要在觸發propBacklink字段時評估一組字段,則需要使用the .addMethod() methodpropBacklink編寫新的方法(規則)。

  • 在此自定義功能,您可以使用this.element()任何元素上觸發驗證。

    this.element(element); // the field being evaluated by the custom method: propBacklink 
    this.element($('[name="X"]')); // field with name="X" 
    
  • 只能指派或聲明這個新規則,以一個領域,propBacklinkX,YZ將根據新定製規則的功能中包含的this.element()進行驗證。

  • 請注意hundreds of examples posted here以及documentation within the tag Wiki


編輯

我不知道你想與readonly領域,用戶不能直接控制觸發驗證該方案完成的任務。

以下操作將檢查X,YZ是否有效,如果其中任何一個驗證失敗,則返回錯誤。

$.validator.addMethod("CheckNextFields", function(value, element) { 

    return this.optional(element) || (this.element($("[name='X']")) && this.element($("[name='Y']")) && this.element($("[name='Z']"))); 

}, "X, Y, and Z are not valid."); 

(當然,你還需要,如果你想驗證他們分配一些驗證規則XYZ。否則,你會觸發什麼?)

你的規則對象的格式也有些混亂。你應該把規則放在rules對象的內部。它們由字段名的鍵值對和每個規則的列表組成。

$('#yourform').validate({ 
    rules: { 
     propBacklink: { 
      // rules for propBacklink 
      required: false, // <- superfluous (default) 
      url: true, 
      remote: { 
       url: "backlinkInDB.php", 
       type: "post" 
      }, 
      CheckNextFields: true 
     }, 
     X: { 
      // rules for X 
     }, 
     Y: { 
      // rules for Y 
     }, 
     Z: { 
      // rules for Z 
     }, 
     .... 
    }, 
    .... 
+0

感謝您的建議!經過幾個小時的搜索和玩耍,我想出了上面的代碼,但是這並不幸運。我究竟做錯了什麼? – Peps

+0

@Peps,仍然不清楚你在做什麼,但我編輯了我的答案,告訴你你的自定義方法應該是什麼樣子。 – Sparky

相關問題