2010-04-23 21 views
1

問題出在這裏:使用jQuery驗證器插件,如何使用動態創建的名稱屬性來分配規則?

我們使用的電子商務系統爲每個購買的產品生成一個訂單項。當訂單項沿頁面向下時,它會爲訂單項的數量輸入名稱屬性「qty0」,「qty1」,「qty2」等等。

我需要檢查這些qtyX輸入的有效性,但我不知道如何將name屬性作爲另一個屬性(如類)的相對屬性傳遞,或將正則表達式傳遞給validate插件以查找所有數量字段。

下面是驗證碼:

var validator = $("#formName").validate({ 
    rules: { 
     qty: { customMethod: true}// qty 
     },//rules 

    messages: { 
     qty: {customMethod: "NOPE"} 
    }, 

    errorPlacement: function(error, element) { 
      error.appendTo("#itemQuantityError"); 
    }, 

}); 

這裏是獲取生成的輸入樣本:

<td ><input name="qty1" value="6" size="5"></td> 

謝謝!!

回答

4

您可以生成規則和動態消息:

var rules = new Object(); 
var messages = new Object(); 
$('input[name^=qty]:text').each(function() { 
    rules[this.name] = { required: true }; 
    messages[this.name] = { required: 'This field is required' }; 
}); 

var validator = $("#formName").validate({ 
    rules: rules, 
    messages: messages, 
    errorPlacement: function(error, element) { 
     error.appendTo("#itemQuantityError"); 
    } 
}); 
+0

謝謝。這是完美的。我脫離了這個項目,所以我沒有時間再次解決這個問題......你知道這是怎麼回事? ;) 再次感謝。 – brennanag 2010-05-06 21:15:46

+0

只是爲了編程,這對我來說工作得很好,而不是遍歷jquery對象,我也可以遍歷一個名稱數組。 當你用這種方式設置規則時,jQuery驗證甚至可以處理複雜的名稱。所以,假設我有一個類似'[「input1」,「input2」]'的數組,我可以說 '$ .each(myArray,function(i,v){rules [「namespace。」+ v] = { required:true};});' 它會爲我的所有字段創建規則,如「namespace.input1」。 – jonnybot 2014-03-06 23:00:25

相關問題