我正在尝试使用jQuery Validate插件验证html select元素。我将“required”规则设置为true,但它总是通过验证,因为默认情况下会选择零索引。有没有办法定义所需规则使用的空值?
UPD。例。想象一下,我们有以下html控件:
<select>
<option value="default">Choose...</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
我希望验证插件将“默认”值用作空。
答案 0 :(得分:232)
这里概述了一个更简单的解决方案: Validate select box
将值设为空并添加必需的属性
<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>
答案 1 :(得分:202)
你可以写自己的规则!
// 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!" }
}
});
答案 2 :(得分:38)
最简单的解决方案
只需将第一个选项的值设置为空字符串value=""
<option value="">Choose...</option>
和jquery validation required
规则will work
答案 3 :(得分:29)
使用最小规则
将第一个选项值设为0
'selectName':{min:1}
答案 4 :(得分:8)
您只需将validate[required]
作为此选择的类,然后选择值为&#34;&#34;&#34;
例如:
<select class="validate[required]">
<option value="">Choose...</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
答案 5 :(得分:7)
我不知道插件是问题的时间(2010),但我今天遇到了同样的问题并以这种方式解决了:
为您的选择标记添加名称属性。例如,在这种情况下
<select name="myselect">
不使用标签选项中的属性value =“default”,而是按照Andrew Coats的建议禁用默认选项或设置value =“”
<option disabled="disabled">Choose...</option>
或
<option value="">Choose...</option>
设置插件验证规则
$( "#YOUR_FORM_ID" ).validate({
rules: {
myselect: { required: true }
}
});
或
<select name="myselect" class="required">
Obs:Andrew Coats的解决方案只有在您的表单中只有一个选择时才有效。如果您希望他的解决方案适用于多个选择,请在您的选择中添加名称属性。
希望它有所帮助! :)
答案 6 :(得分:3)
以下是一个简单易懂的示例:
<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 $
答案 7 :(得分:1)
@JMP提到的解决方案在我的案例中进行了一些修改:
我在element.value
中使用value
而不是addmethod
。
$.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!" }
}
});
有可能,我在这里有一个特例,但没有找到原因。但@ JMP的解决方案应该适用于常规情况。
答案 8 :(得分:1)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<form id="myform">
<select class="form-control" name="user_type">
<option value="">Select</option>
<option value="2">1</option>
<option value="3">2</option>
</select>
</form>
<script>
$('#myform').validate({ // initialize the plugin
rules: {
user_type:{ required: true},
}
});
</script>
选择值将为空白
答案 9 :(得分:0)
很简单,你需要获得Select字段值,它不能是“默认”。
if($('select').val()=='default'){
alert('Please, choose an option');
return false;
}
答案 10 :(得分:0)
如何验证select&#34; qualifica&#34;它有3个选择
$(document).ready(function(){
$('.validateForm').validate({
rules: {
fullname: 'required',
ragionesociale: 'required',
partitaiva: 'required',
recapitotelefonico: 'required',
qualifica: 'required',
email: {
required: true,
email: true
},
},
submitHandler: function(form) {
var fullname = $('#fullname').val(),
ragionesociale = $('#ragionesociale').val(),
partitaiva = $('#partitaiva').val(),
email = $('#email').val(),
recapitotelefonico = $('#recapitotelefonico').val(),
qualifica = $('#qualifica').val(),
dataString = 'fullname=' + fullname + '&ragionesociale=' + ragionesociale + '&partitaiva=' + partitaiva + '&email=' + email + '&recapitotelefonico=' + recapitotelefonico + '&qualifica=' + qualifica;
$.ajax({
type: "POST",
url: "util/sender.php",
data: dataString,
success: function() {
window.location.replace("./thank-you-page.php");
}
});
return false;
}
});
});
答案 11 :(得分:-3)
html
<select class="design" id="sel" name="subject">
<option >- 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**
$(document).ready(function() {
if($("#sel").val() == null){
alert('select a value)
}
});