下拉列表验证不显示错误

时间:2013-07-03 09:09:53

标签: jquery jquery-validate

我有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."
                        }
              }

            });

    });

如果我选择“选择......”,我不知道为什么没有错误信息。我的逻辑是否正确?

4 个答案:

答案 0 :(得分:1)

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

form22:{ 
  check_item_dropdown: true,
  required:true
}

另一个是如果值为0,则从方法返回true。你希望它不是0,对吧?所以你的检查应该是值!== 0不是值== 0。

答案 1 :(得分:0)

而不是id属性form22,请在验证脚本中使用名称属性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 methodif条件进行了一些更改,以便检查value0blank。并且还在验证中设置了name属性,我也在我的localhost中进行了测试。

同时从选项中删除selected="selected"

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

答案 2 :(得分:0)

将您的选择选项设为:

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

答案 3 :(得分: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
                        }
                }
         });

        });