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年),但是我今天面对同样的问题,并且这样解决了这个问题:
-
给你的select标签一个名称属性。 例如在这种情况下
<select name="myselect">
-
而不是在标签选项中使用属性value =“default”,按照Andrew Coats的build议禁用默认选项或设置value =“”
<option disabled="disabled">Choose...</option>
要么
<option value="">Choose...</option>
-
设置插件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应该在正常情况下工作。