29

我正在使用此处的验证插件。我正在尝试强制用户在下拉列表中选择一个选项,所以这是我的 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/>​

这是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'",
     },
    }
});

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

4

7 回答 7

74

状态的文档required()

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

通过value="none"在您的<option>标签中,您可以防止进行验证调用。您还可以删除您的自定义验证规则,从而简化您的代码。这是一个 jsFiddle 显示它的实际操作:

http://jsfiddle.net/Kn3v5/

如果您无法将value属性更改为空字符串,我不知道该告诉您什么...我找不到任何方法来验证它。

于 2012-09-17T22:35:24.297 回答
8

众所周知,jQuery validate 插件在 Select 字段为空值时会使其无效。为什么我们不在需要时将其值设置为空白。

是的,您可以使用一些预定义的值来验证选择字段。

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

我们可以为选择字段设置空白值,但在某些情况下我们不能。例如:使用为您生成下拉字段的函数,而您无法控制它。

我希望它有所帮助,因为它对我有帮助。

于 2014-03-04T04:55:10.277 回答
3

这是我的解决方案:

我在 select 标签中添加了required :

                <div class="col-lg-10">
                <select class="form-control" name="HoursEntry" id="HoursEntry" required>
                    <option value="">Select.....</option>
                    <option value="0.25">0.25</option>
                    <option value="0.5">0.50</option>
                    <option value="1">1.00</option>
                    <option value="1.25">1.25</option>
                    <option value="1.5">1.50</option>
                    <option value="2">2.00</option>
                    <option value="2.25">2.25</option>
                    <option value="2.5">2.50</option>
                    <option value="3">3.00</option>
                    <option value="3.25">3.25</option>
                    <option value="3.5">3.50</option>
                    <option value="4">4.00</option>
                    <option value="4.25">4.25</option>
                    <option value="4.5">4.50</option>
                    <option value="5">5.00</option>
                    <option value="5.25">5.25</option>
                    <option value="5.5">5.50</option>
                    <option value="6">6.00</option>
                    <option value="6.25">6.25</option>
                    <option value="6.5">6.50</option>
                    <option value="7">7.00</option>
                    <option value="7.25">7.25</option>
                    <option value="7.5">7.50</option>
                    <option value="8">8.00</option>
                </select>
于 2014-12-01T16:58:12.323 回答
3

完成它的最简单方法是添加required到您的select

Select the best option
<br/>

<select name="dd1" id="dd1" required>
<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/>​
于 2018-05-16T12:33:46.303 回答
1
    <div id="msg"></div>
<!-- put above tag on body to see selected value or error -->
<script>
    $(function(){
        $("#HoursEntry").change(function(){
            var HoursEntry = $("#HoursEntry option:selected").val();
            console.log(HoursEntry);
            if(HoursEntry == "")
            {
                $("#msg").html("Please select at least One option");
                return false;
            }
            else
            {
                $("#msg").html("selected val is  "+HoursEntry);
            }
        });
    });
</script>
于 2016-03-30T08:33:15.600 回答
0
$(document).ready(function(){
$("#HoursEntry").change(function(){
var HoursEntry = $(#HoursEntry option:selected).val();
if(HoursEntry == "")
{
$("#HoursEntry").html("Please select");
return false;
}
});
});
于 2014-12-17T05:15:42.047 回答
-1

我稍微修改了你的代码。这是一个工作版本(对我来说):

    <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>  
    <div style="color:red;" id="msg_id"></div>

<script>
    $('#everything').submit(function(e){ 
        var department = $("#msg_id");
        var msg = "Please select Department";
            if ($('#dd1').val() == "") {
                department.append(msg);
                e.preventDefault();
                return false;
            }
        });
 </script>
于 2016-07-11T05:57:58.813 回答