我有一种以下结构形式
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”..
答案 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
}
});
});