2014-09-30 70 views
0

我是一個被標記像這樣一種形式:jQuery驗證填充組動態

<form> 
    <label for="day">Day</label><input type="text" name="day" id="day"> 
    <label for="month">Month</label><input type="text" name="month" id="month"> 
    <label for="year">Year</label><input type="text" name="year" id="year"> 
</form> 

不幸的是,上字段的名稱將是動態的,會直到運行時是已知的。有3個字段是必需的,並希望他們有1個錯誤消息。

我試圖使用名爲myGroupData的變量填充組,但它不起作用。代碼看起來像這樣:

$('#myform').validate({ 
    rules..., 
    groups myGroupData, 
    errorPlacement 
}); 

var myGroupData = {DateofBirth: "day month year"}; 
     or 
var myGroupData = {DateofBirth: "field1 field2 field3 etc..."}' //field1, field2, field3 will be the names of the dynamic fields 

謝謝,任何幫助,將不勝感激。

+0

底線:插件初始化後,您不能** _動態_更改任何選項,但規則/消息除外。 – Sparky 2014-09-30 19:38:33

回答

0

按照該jsFiddle從您的評論我的答案被刪除:

之前你使用它你必須定義變量...

var myGroups = {DateofBirth: "day month year"}; 

$('#myform').validate({ 
    rules: { 
     day: "required", 
     month: "required", 
     year: "required" 
    }, 
    groups: myGroups 
}); 

DEMO:http://jsfiddle.net/v0dmuvor/

不確定爲什麼我最初無法正常工作......也許jsFiddle脫穎而出。


注:

  • .validate()只是插件的初始化方法。一旦被調用,它就不能再被調用(也不會被調用)。後續的呼叫被忽略。

  • 插件作者尚未提供動態更改除規則/消息之外的任何選項的方法。一旦.validate()被調用時,插件的選項都鎖定在


編輯:不知道你的想法「動態」是我的一樣。但是,如果您打算在頁面加載並且插件初始化後更改groups選項的參數,則不能按照上述註釋完成。

+0

我不認爲這回答了這個問題。這個答案假定編碼員知道字段的名稱,但是問題明確指出他沒有 - 他們只在運行時定義。這就是他的意思是動態...有點像這個問題,但對於組而不是單個字段:http://stackoverflow.com/questions/20561712/jquery-validate-plugin-on-dynamic-form-inputs-not-無論如何,爲了在運行前不知道名稱而使用'groups'選項,仍然需要根據OP的示例代碼在運行時構造'myGroups'變量,無論如何,工作 – geoidesic 2016-04-04 08:49:19

+0

@geoidesic。如果這是不可能的,那麼就沒有解決方案,因爲這個插件在插件初始化後沒有提供更改這些選項的方法。 – Sparky 2016-04-04 22:13:04