0

我有 4 个相同的下拉列表,用户必须至少选择第一个。所以我为第一个添加了验证。如果第一个下拉列表的值为 0,则显示错误消息。

HTML:(第一个下拉列表)

<select id="form22" class="select form22" name="m22">
<option selected="selected"    value="0"> Choose....</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>

jQuery:

$.validator.addMethod("check_item_dropdown", function(value, element) {  
        return this.optional(element) || value == 0 ;   
         }, "Please select an item from the dropdown list.");

$().ready(function() {
    $("#response").validate({

    rules: {
                form22:{ 
                         check_item_dropdown: true
                       }
            },

    messages: {
                form22:{
                        check_item_dropdown: " Please select an item."
                        }
              }

            });

    });

我不知道如果我选择了 "Choose...." 为什么没有错误消息。我的逻辑正确吗?

4

4 回答 4

1

我认为这里有两个问题。一是从您发布的代码的外观来看,form22 是可选的。要解决此问题,请在验证器设置中添加 required : true ,如下所示:

form22:{ 
  check_item_dropdown: true,
  required:true
}

另一个是如果值为 0,则从方法中返回 true。您希望它不为 0,对吗?所以你的支票应该是 value !== 0 而不是 value == 0。

于 2013-07-03T09:22:50.987 回答
0

您的 addmethod 某处有问题...试试这个 addmethod...

 $.validator.addMethod("check_item_dropdown",function(value, element, param)
    {
             var notDefault = true;
             if(element.selectedIndex == 0)
                      notDefault =false;
             return this.optional(element)|| notDefault;
    }, "Please select an item from the dropdown list.");

    $(document).ready(function() {

        $("#response").validate({

        rules: {
                    m22:{ 
                             check_item_dropdown: true
                        }
                }
         });

        });
于 2013-07-03T09:40:47.340 回答
0

在验证脚本中form22使用 name 属性而不是 id 属性。m22

希望这对你有用。

已编辑

<script type="text/javascript">
$.validator.addMethod("check_item_dropdown", function(value, element) {  
    if(value == 0 || value == '') {
        return false;
    } else {
        return true;
    }   
}, "Please select an item from the dropdown list.");

$().ready(function() {
    $("#response").validate({

        rules: {
            m22:{ 
                     check_item_dropdown: true
                   }
        },

        messages: {
            m22:{
                    check_item_dropdown: " Please select an item."
                    }
          }

    });
});
</script>

validator method我对您的,条件进行了一些更改,if检查条件value0or blank。并且还在验证中设置名称属性,我也在我的本地主机中进行了测试。

selected="selected"从选项中删除。

它现在工作。试试这个,让我知道这是否适合你。

于 2013-07-03T09:13:33.433 回答
0

使您的选择选项如下所示:

<option selected="selected" value=""> Choose....</option>
于 2013-07-03T09:14:31.463 回答