在IE上默认忽略jquery验证 - 当使用rails ujs driver + jquery-validation + ajax表单时

时间:2011-03-07 17:39:53

标签: ruby-on-rails-3 jquery-validate ujs

我不清楚问题是ujs驱动程序还是jquery-validate插件...

当使用jquery UJS驱动程序(最新的,来自github)+ jquery-validate插件(最新的,来自github)+ ajax形式(通过数据远程标记)时,验证规则会被默默忽略。仅在IE 8中,chrome和FF工作正常

使用jquery 1.4.4和jquery 1.5.1进行测试,使用来自github的最新jquery验证。

这是一个简单的例子: http://avioing.com/validate/example.htmlhttp://avioing.com/validate/example_no_ujs.html

尝试提交表单,同时将cityfield留空。在第一种情况下什么都不会发生。您将看到在第二种情况下触发的验证消息。

两个文件之间的唯一区别是我从后一个文件中的表单中删除了“data-remote”标记,现在验证已被触发。

2 个答案:

答案 0 :(得分:1)

我在jquery-ujs / github上发布了这个问题,并且在jquery-ujs团队的帮助下,我们确定了一个涉及IE< 9,jquery和jquery-ujs,以及在IE和其他浏览器中处理提交事件冒泡的方式。

jquery-ujs团队开发了一个解决方法(参见此处的讨论https://github.com/rails/jquery-ujs/pull/123),但在撰写本文时,修复程序尚未被引入jquery-ujs树。关注的问题是该问题是否应该在jquery或jquery-ujs中修复。

与此同时,我相信您可以根据github上的pull请求手动修补rails.js以解决此问题。

答案 1 :(得分:0)

解决方案由teohm发布在http://teohm.github.com/blog/2011/05/25/using-jquery-validation-in-rails-remote-form/

$('#submit_form').validate({

  submitHandler: function(form) {
    // .. do something before submit ..
    $.rails.handleRemote( $(form) );  // submit via xhr
    //form.submit();                  // don't use, it submits the form directly
  }

});

希望有所帮助