2012-08-01 28 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