ajax表单中的ajax链接调用表单提交无缘无故rails 3

时间:2011-05-18 07:29:35

标签: jquery ajax ruby-on-rails-3

我有一种以下结构形式

ROR代码“

form_tag class='remote_form' remote=>true
{
some fields
1
2
3
one <a> link remote=>true
4
submit button
}

jquery代码

$('.remote_form').live('ajax:beforeSend', function(event, elements){
do some blah blah
}

现在当我点击“一个链接”“blah blah”事情执行。为什么会这样 ? 基本上只有当我点击提交“blah blah”时才必须执行。

我做错了吗?


我的想法: 表单包含一些元素。在表单提交之前,我需要做一些事情,所以我使用ajax:在发送for remote_form之前。现在我也有一些链接,这是一个完全独立于形式的ajax请求。 显然,一个链接不应该导致执行“blah blah”..

2 个答案:

答案 0 :(得分:1)

ajax:beforeSend适用于所有ajax调用。这就是函数执行的原因。如果您希望仅在表单提交时执行该功能,请将该功能绑定到表单的提交事件,如

$('#myForm2').submit(function() { 
        // inside event callbacks 'this' is the DOM element so we first 
        // wrap it in a jQuery object and then invoke ajaxSubmit 
        $(this).ajaxSubmit(options); 

        // !!! Important !!! 
        // always return false to prevent standard browser submit and page navigation 
        return false; 
    });

但是jquery有一个插件可以为你做所有这些事情。我想你应该看看jquery form plugin,它解释了使用ajax提交表单的所有内容。

答案 1 :(得分:0)

我不太明白。您的问题是,虽然表单尚未提交,但是会触发回调吗?

您是否尝试使用经典的$ .ajax()函数:

$('.remote_form').submit(function(){
    $.ajax({
        beforeSend: function(){
            // do something
        }
    });
});