2012-03-10 7 views
0

私は次のようにドロップダウンリストを検証するためにjQueryの検証を使用しています:ここ検証ドロップダウンリストに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では非常に奇妙な動作をします。検証の前と検証後にドロップダウンが正常に機能します。ドロップダウンを開こうとするとすぐに閉じます。

+0

これを解明したことがありますか?私はIE9で同じ動作を見ている。 –

+0

ページのHTMLマークアップに欠落していた終了タグがありました。 –

答えて

3

あなたの検証オプションでonclick: falseを追加します。

例えば

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

これは私に役立ちました。

0

ハイライト機能の要素でaddClass()を呼び出すと、同じ問題が発生します。あなたの問題は、toggleClass()関数と同様に行うことだと思います。 toggleClass()の呼び出しを削除し、それがまだ起こっているかどうかを確認します。