我不清楚问题是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.html和 http://avioing.com/validate/example_no_ujs.html
尝试提交表单,同时将cityfield留空。在第一种情况下什么都不会发生。您将看到在第二种情况下触发的验证消息。
两个文件之间的唯一区别是我从后一个文件中的表单中删除了“data-remote”标记,现在验证已被触发。
答案 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
}
});
希望有所帮助