使用jquery提交表单不起作用

时间:2013-07-10 14:45:31

标签: jquery ruby-on-rails-3

我使用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;
};

如果我停止使用渲染部分形式的函数,则上述函数有效。任何帮助都会非常有帮助。感谢

2 个答案:

答案 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;

     });