2010-05-24 108 views
123

我想验证html选择元素使用jQuery验证插件。我将“required”规则设置为true,但它始终通过验证,因为默认情况下会选择零索引。有什么方法可以定义所需规则使用的空值吗?jQuery验证必填选择

UPD。例。试想一下,我们有以下的HTML控件:

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

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

+0

放一些代码片段,这样我们可以提供帮助。 – Lee 2010-05-24 23:55:25

+0

可能的重复:http://stackoverflow.com/questions/1271640/jquery-validate-select-box – cregox 2011-03-11 21:15:15

回答

182

你可以写自己的规则!

// 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!" } 
    } 
}); 
+0

它也帮助了我,谢谢 – 2010-12-06 08:31:25

+0

保存我的一天!谢谢。 – 2012-05-26 15:56:25

+1

您可以测试选定的文本,而不是价值,如:! '$ .validator.addMethod( “valueNotEquals” 功能(价值元素,ARG){ 收益回报ARG =的jQuery(元).find('选项:selected')。text(); },“Value must not equal arg。”);' – 2014-01-08 21:45:10

27

使用分钟规则

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

'selectName':{min:1} 
+0

第一个值是固定的(对此值有一些后端逻辑) – SiberianGuy 2010-05-25 01:23:44

+1

太棒了!简单! :-D – 2011-05-05 11:57:58

+0

伟大的黑客时髦 – 2016-02-11 12:28:06

199

更简单的解决方案已经在这里概述: 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> 
+22

这是一个很好的答案,我很震惊,它不是接受的 – 2012-07-27 14:58:36

+4

这个应该是一个公认的。你不必编写自己的方法。DRY – nXqd 2012-09-06 07:55:55

+9

但是你必须给你的选项一个空值 - 并不总是可能或不可能 – Muleskinner 2012-10-11 11:42:39

1

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

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

我不知道怎么是插件的问题被问的时候(2010年),但我今天所面临的同样的问题,解决这样说:

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

    <select name="myselect">

  2. 而是与属性值=“默认”的标签选项工作,禁止由安德鲁·科茨

    建议的默认选项或设定值=“” <option disabled="disabled">Choose...</option>

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

  3. 设置插件验证规则

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

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

数据:如果你只有一个表单中的选择安德鲁·科茨的解决方案才有效。如果您希望他的解决方案能够处理多个选择,请为您的选择添加一个名称属性。

希望它有帮助!:)

+0

谢谢你在这里巩固了答案。非常有帮助 – Christina 2014-12-02 19:49:04

+0

===这是最简单和最简单的答案=== – Stephen 2015-05-04 22:02:03

+0

简而言之,将'required'属性添加到'