我使用jquery
渲染部分表单$('.actCell').click(createClick);
function createClick() {
var create = $(this).attr("create");
$('#'+create).slideToggle();
$.get('/policies/new', function(data) {
});
}
然后还有另一个提交表单但是提交不起作用的函数(缺少提交函数并执行rails方式)
$("#new_policy").submitWithAjax();
jQuery.fn.submitWithAjax = function () {
this.submit(function () {
$('#createPolicy').slideToggle();
$.post(this.action, $(this).serialize(), null, "script");
return false;
})
return this;
};
如果我停止使用渲染部分形式的函数,则上述函数有效。任何帮助都会非常有帮助。感谢
答案 0 :(得分:2)
由于表单是动态的,您应该使用委托事件处理程序:
jQuery.fn.submitWithAjax = function () {
$(document).on('submit', this.selector, function () {
$('#createPolicy').slideToggle();
$.post(this.action, $(this).serialize(), null, "script");
return false;
});
return this;
};
在插件中,this.selector
是传递的选择器作为字符串,在本例中为#new_policy
,因此将其与on()
一起使用会将事件委托给文档并对选择器进行过滤
答案 1 :(得分:0)
我终于想通了。这就是我在做的事。
$(document).on('submit', 'form#new_policy', function() {
$('#createPolicy').slideToggle();
$.post(this.action, $(this).serialize(), null, "script");
return false;
});