jQueryvalidation必需select

我正在尝试使用jQuery Validate插件validationhtmlselect元素。 我将“required”规则设置为true,但它总是通过validation,因为默认情况下select零索引。 有没有什么办法来定义所需规则使用的空值?

UPD。 例。 想象一下,我们有以下的html控件:

<select> <option value="default">Choose...</option> <option value="1">1</option> <option value="2">2</option> </select> 

我想validation插件使用“默认”值为空。

你可以写自己的规则!

  // add the rule here $.validator.addMethod("valueNotEquals", function(value, element, arg){ return arg !== value; }, "Value must not equal arg."); // configure your validation $("form").validate({ rules: { SelectName: { valueNotEquals: "default" } }, messages: { SelectName: { valueNotEquals: "Please select an item!" } } }); 

这里列出了一个更简单的解决scheme: validationselect框

使该值为空并添加必需的属性

 <select id="select" class="required"> <option value="">Choose an option</option> <option value="option1">Option1</option> <option value="option2">Option2</option> <option value="option3">Option3</option> </select> 

使用最小规则

将第一个选项的值设置为0

 'selectName':{min:1} 

最简单的解决scheme

只需将第一个选项的值设置为空stringvalue=""

 <option value="">Choose...</option> 

和jQueryvalidationrequired规则will work

你只需要validate[required]必选validate[required]作为这个select的类,然后把一个选项的值=“”

例如:

 <select class="validate[required]"> <option value="">Choose...</option> <option value="1">1</option> <option value="2">2</option> </select> 

我不知道这个问题是如何被问到的(2010年),但是我今天面对同样的问题,并且这样解决了这个问题:

  1. 给你的select标签一个名称属性。 例如在这种情况下

    <select name="myselect">

  2. 而不是在标签选项中使用属性value =“default”,按照Andrew Coats的build议禁用默认选项或设置value =“”

    <option disabled="disabled">Choose...</option>

    要么

    <option value="">Choose...</option>

  3. 设置插件validation规则

    $( "#YOUR_FORM_ID" ).validate({ rules: { myselect: { required: true } } });

    要么

    <select name="myselect" class="required">

观察:Andrew Coats的解决scheme只有在您的表单中只有一个select时才有效。 如果你想让他的解决scheme与多个select一起工作,请在您的select中添加一个名称属性。

希望它有帮助! 🙂

这是一个简单易懂的例子:

  <select class="design" id="sel" name="subject"> <option value="0">- Please Select -</option> <option value="1"> Example1 </option> <option value="2"> Example2 </option> <option value="3"> Example3 </option> <option value="4"> Example4 </option> </select> <label class="error" id="select_error" style="color:#FC2727"><b> Warning : You have to Select One Item.</b></label><td> <input type="submit" name="sub" value="Gönder" class=""> 

JQuery:

 jQuery(function() { jQuery('.error').hide(); // Hide Warning Label. jQuery("input[name=sub]").on("click", function() { var returnvalue; if(jQuery("select[name=subject]").val() == 0) { jQuery("label#select_error").show(); // show Warning jQuery("select#sel").focus(); // Focus the select box returnvalue=false; } return returnvalue; }); }); // you can change jQuery with $ 

这很简单,你需要获得select字段值,它不能是“默认”。

 if($('select').val()=='default'){ alert('Please, choose an option'); return false; } 

@JMP提到的解决scheme在我的情况下工作了一点点修改:我在addmethod使用element.value而不是value

 $.validator.addMethod("valueNotEquals", function(value, element, arg){ // I use element.value instead value here, value parameter was always null return arg != element.value; }, "Value must not equal arg."); // configure your validation $("form").validate({ rules: { SelectName: { valueNotEquals: "0" } }, messages: { SelectName: { valueNotEquals: "Please select an item!" } } }); 

有可能,我在这里有一个特例,但没有find原因。 但@ JMP的解决scheme应该在正常情况下工作。