验证下拉列表的JQuery验证奇怪的行为

时间:2012-03-10 19:20:33

标签: javascript jquery asp.net drop-down-menu

我正在使用jQuery验证来验证下拉列表,如下所示:

这里是javascript部分:

 $.ready(function(){ 
   $.validator.addMethod("dropdown", function (value, element) { return    validateDropDowns(this, value, element); });
    $('#form1').validate({
        onsubmit: false,
        focusInvalid: true,
        highlight: function (element, errorClass, validClass) {
            $(element).toggleClass('invalid');
            $(element.form).find("label[for=" + element.id + "]").toggleClass(errorClass);
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).toggleClass('invalid');
            $(element.form).find("label[for=" + element.id + "]").toggleClass(errorClass);
        }
    });
});

function validateDropDowns(objContext, value, element) {
    return objContext.optional(element) || value != "-1";
}

这是标记部分:

<asp:DropDownList runat="server" ID="cmbGender" ClientIDMode="Static" meta:resourcekey="cmbGenderResource1">
    <asp:ListItem Selected="True" Value="-1" Text="please select gender" meta:resourcekey="ListItemResource1"></asp:ListItem>
    <asp:ListItem Value="1" Text="male" meta:resourcekey="ListItemResource2"></asp:ListItem>
    <asp:ListItem Value="2" Text="female" meta:resourcekey="ListItemResource3"></asp:ListItem>
</asp:DropDownList>

我有一个提交按钮,点击后我会验证表单return $("#form1").valid();

现在一切都在Chrome和Firefox中运行良好但在IE9中我得到了一个非常奇怪的行为;在验证之前和验证之后,下拉列表工作正常。当您尝试打开下拉列表时,它会立即关闭。

2 个答案:

答案 0 :(得分:3)

在验证选项中添加onclick: false

e.g。

$(".selector").validate({
   onclick: false
})

这对我有用。

答案 1 :(得分:0)

在高亮显示功能的元素上调用addClass()时遇到同样的问题。我认为您的问题也与toggleClass()函数有关。删除对toggleClass()的调用,看看它是否仍然存在。