如何使jQuery验证插件在IE中的下拉列表中工作

时间:2012-09-20 06:16:36

标签: jquery jquery-validate

来自http://bassistance.de/jquery-plugins/jquery-plugin-validation/的jQuery验证插件存在IE下拉列表的问题。我使用的是jQuery 1.7.2,Validation插件1.9.0和jQuery UI 1.8.21。

请参阅: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()});
    }

1 个答案:

答案 0 :(得分:2)

看起来IE不喜欢选择的title属性。在我的情况下,我在errorPlacement中使用bootstrap工具提示。我的修复如下:

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

这只是忽略了完全设置title属性。您还可以确定该元素是否为select,并尝试使用以下替代选项:

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