2012-09-20 11 views
0

http://bassistance.de/jquery-plugins/jquery-plugin-validation/的jQuery驗證插件在IE下拉菜單中存在問題。我使用jQuery 1.7.2,驗證插件1.9.0和jQuery UI 1.8.21。如何讓jQuery驗證插件在IE下拉菜單中工作

請參閱:http://quickshare.spreadsheet-converter.com/l/p/4jp8gq42fv57/

  • 在IE 7,驗證工作,即它阻止從形式提交,但不施加「錯誤」類。雖然處於無效狀態,但我可以選擇有效的值。 (雖然我的IE 7是而不是我的關注。)

  • 在IE 8中,驗證工作,'錯誤'類應用,所以我看到'紅色'的邊框。但是,處於無效狀態後,我可以而不是打開下拉菜單 - 它會自動崩潰。雖然,我可以雙擊選擇有效的值。

  • 在IE 9中,驗證工作,'錯誤'類被應用,但我無法在無效狀態後選擇有效值。單擊和雙擊自動打開和關閉下拉菜單。我也不能通過使用左/右鍵來更改數值 - 通常可以使用下拉菜單。

任何提示?

謝謝!

更新:演示頁http://jquery.bassistance.de/validate/demo/radio-checkbox-select-demo.html適用於下拉式選項,'錯誤'類也適用於無效狀態。它可以與CSS相關嗎?

更新2:我在純文本頁面中測試了1.9和新版本1.10的驗證插件。我發現有errorPlacement像這樣初始化的對象導致了這個問題。即使我評論errorPlacement的正文功能,問題也會消失。插件網站上的演示不是這樣的。

$('#formc').validate({  
    errorPlacement: function(error, element){    
     //$(element).attr({'title': error.text()}); 
    } 

回答

2

它看起來像IE不喜歡選擇的標題屬性。在我的情況下,我正在使用errorPlacement中的引導工具提示。我的修復如下所示:

errorPlacement: function (error, element) { 
       $(element).tooltip({ title: $(error).text(), container: 'body' }); 
     } 

這只是忽略了設置title屬性。你也可以確定元素是否是一個選擇,並嘗試這樣的替代選項:

errorPlacement: function (error, element) { 
       if($(element).is('select'){ 
       ...do something else 
       } 
       else{ 
        $(element).attr({'title': error.text()}); 
       } 
     }