下拉列表验证不显示错误



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

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

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

form22:{ 
  check_item_dropdown: true,
  required:true
}

另一种情况是,如果值为0,则从该方法返回true。你希望它不是0,对吧?所以你的支票应该是有价值的!==0不是值==0。

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

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

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

希望这对你有用。

已编辑

<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条件进行了一些更改,以检查value0还是blank。并且在验证中设置了name属性,我也在本地主机中进行了测试。

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

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

您的addmethodsomewhere问题。。。试试这个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
                        }
                }
         });
        });

相关内容

最新更新