我正在使用UJS在模态中填充表单,我正在使用JQuery Validate执行验证并通过ajax将表单提交回服务器。
一切都很好,表单被渲染,字段被验证,表单被正确地提交给服务器。问题是挂起$.rails.handleRemote
函数的回调不会触发。
这是我用于验证和提交的CoffeeScript(使用new.js.erb和edit.js.erb调用此函数:
@initializeForm: ->
$(".note-form").validate ->
rules:
"note[title]" : "required"
submitHandler: (form) ->
$.rails.handleRemote($(form))
.done ->
alert "You will never see me!"
new.js.erb
$('#modal-window').html('<%= escape_javascript(render :partial => 'form', :object => @note) %>');
Note.initializeForm();
create.js.erb
var note = new Note();
note.createOrUpdate("note<%= @note.id %>", "<%= @note.title %>", "<%= escape_javascript(render @note) %>");
我可以通过在应用程序范围的脚本中添加它来解决它:
$(document).on 'ajax:success', '.note-form', ->
alert "Here I am!"
我已经验证我只加载了一个JQuery副本。
任何想法都会很棒!
修改 以下是发送到浏览器的已编译JS:
Note.initializeForm = function() {
return $(".note-form").validate(function() {
return {
rules: {
"note[title]": "required"
},
submitHandler: function(form) {
return $.rails.handleRemote($(form)).always(function() {
return alert("You will never see me!");
});
}
};
});
};
答案 0 :(得分:0)
问题在于验证调用的语法。我传递的是函数而不是对象。
从CoffeeScript调用validate
的正确方法:
@initializeForm: ->
$(".note-form").validate
rules:
"note[title]" : "required"
submitHandler: (form) ->
$.rails.handleRemote($(form))
.done ->
alert "You will never see me!"