JQuery Validate下拉列表

Ric*_*ard 28 html validation jquery jquery-validate drop-down-menu

我正在使用此处的验证插件.我正在尝试强制用户在下拉列表中选择一个选项,所以这是我的html列表:

Select the best option<br/>
<select name="dd1" id="dd1">
<option value="none">None</option>
<option value="o1">option 1</option>
<option value="o2">option 2</option>
<option value="o3">option 3</option>
</select> <br/><br/>?
Run Code Online (Sandbox Code Playgroud)

这是jquery验证的东西:

$("#everything").validate({
    onsubmit: true,
    rules: {
     dd1: {
      required: {
        depends: function(element) {
            return $("#dd1").val() == "none";
        }
      }
    },
    messages: {
     dd1: {
      required: "Please select an option from the list, if none are appropriate please select 'Other'",
     },
    }
});
Run Code Online (Sandbox Code Playgroud)

我没有看到任何问题,但即使我从下拉列表中选择none并单击submit,它也不会验证它,因此不会显示任何消息.谁能告诉我我做错了什么?

Eth*_*own 68

文档required()状态:

要强制用户从选择框中选择一个选项,请提供一个空选项 <option value="">Choose...</option>

通过让value="none"你的<option>标签,你是防止以往所取得的确认电话.您还可以删除自定义验证规则,从而简化代码.这是一个jsFiddle显示它在行动:

http://jsfiddle.net/Kn3v5/

如果你不能将value属性更改为空字符串,我不知道该告诉你什么...我找不到任何方法让它进行验证.

  • 一年多以后,仍然有帮助,那就是SO的美...谢谢.:-) (5认同)

Nis*_*mar 6

我们知道jQuery validate plugin会在有空值时选择字段.为什么我们不在需要时将其值设置为空白.

是的,您可以使用某个预定义值验证选择字段.

$("#everything").validate({
    rules: {
        select_field:{
            required: {
                depends: function(element){
                    if('none' == $('#select_field').val()){
                        //Set predefined value to blank.
                        $('#select_field').val('');
                    }
                    return true;
                }
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我们可以为选择字段设置空白值,但在某些情况下我们不能.对于Ex:使用为您生成Dropdown字段的函数,您无法控制它.

我希望它有所帮助,因为它有助于我.