2012-08-01 45 views
0

我有一個隱藏的類型文本框。我剛剛獲得了文本框的名稱,並將其設置爲下拉菜單的ID。如何驗證jQuery中的下拉字段

現在我需要驗證下拉菜單。這就是我所做的。

 <input type="hidden" value="100" name="test1_season_1"> 

    $('input[value="100"][type="hidden"]').each(function(){ 
     myString = $(this).attr('name'); 

     $("#formId").validate({ 
      rules: { 
       myString: "required", 
       }, 
      messages: { 
       mystring: "<br>Please select from dropdown.",  
      } 
     }); 
    }); 

但驗證消息未顯示。

所以我直接給了文本框名稱並檢查驗證,這次它的工作。

  $("#formId").validate({ 
      rules: { 
       test1_season_1: "required", 
       }, 
      messages: { 
       test1_season_1: "<br>Please select from dropdown.",  
      } 
     }); 

我的問題是,每次文本框名稱都會動態生成,所以我不能直接給它。如果存在兩個隱藏類型的文本框,我必須生成兩個下拉列表。

請幫我不要這個。

在此先感謝。

回答

0

不能使用一個變量的值作爲設定初始化的對象時的性質的關鍵(在方式,無論如何)。初始化對象的語法將接受沒有引號的鍵,所以你實際上說的是用鍵myString創建一個屬性,你想要的是創建一個屬性,其中的鍵是你的myString變量的值。

儘量不要使用以下:

myString = $(this).attr('name'); 
alert(correctString); // not entirely sure about this line - where does correctString come from? 

var rules = {}; 
rules[myString] = "required"; 

var messages = {}; 
messages[myString] = "<br>Please select from dropdown."; 

$("#formId").validate({ 
    rules: rules, 
    messages: messages 
}); 

與其說.validate()每個隱藏的輸入,你可以改爲創建兩個對象對所有的規則和信息,然後調用.validate()單時間:

var rules = {}; 
var messages = {}; 

$('input[value="100"][type="hidden"]').each(function() { 
    myString = $(this).attr('name'); 
    rules[myString] = 'required'; 
    messages[myString] = '<br>Please select from dropdown.'; 
}); 

$("#formId").validate({ 
    rules: rules, 
    messages: messages 
}); 
+0

感謝您的幫助(請忽略alert(correctString);)。如果只有一個下拉菜單,上面的代碼工作正常,但如果有兩個下拉菜單,則僅顯示一個下拉菜單中的錯誤消息。 – saran 2012-08-01 10:33:58

+0

@saran我首先要看的是多次調用元素上的'.validate()'是否覆蓋以前調用設置的規則。由於我自己不使用任何驗證插件,或者明確知道您使用的是哪個插件(鏈接到您的特定插件的文檔將很有用),我無法幫助您更多。 – 2012-08-01 10:48:40

+0

插件版本是jQuery驗證插件1.5.5 – saran 2012-08-01 11:17:02

0

給所述輸入的class和使用類規則

$.validator.addClassRules("myvalidator", { 
    required: true, 
    message: "<br>Please select from dropdown." 
}); 

<input type="hidden" value="100" class="myvalidator" name="test1_season_2"> 
<input type="hidden" value="100" class="myvalidator" name="test1_season_3"> 
<input type="hidden" value="100" class="myvalidator" name="test1_season_999"> 

Docs for addClassRules here