我有以下结构的形式
ROR 代码"
form_tag class='remote_form' remote=>true
{
some fields
1
2
3
one <a> link remote=>true
4
submit button
}
j查询代码
$('.remote_form').live('ajax:beforeSend', function(event, elements){
do some blah blah
}
现在,当我单击"一个链接"时,"等等"事情执行. 为什么会这样?基本上只有当我点击提交时,"等等"必须被执行。
我做错了什么吗?
我的想法 :该表单包含一些元素。在提交表单之前,我需要做一些事情,所以我使用 ajax:在发送之前remote_form .现在我也有一些链接,这是一个完全独立于形式的 ajax 请求。显然,一个链接不应该导致"等等"的执行。
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表单插件,它解释了使用ajax提交表单的所有内容。
我不确定是否理解。您的问题是回调被触发,但表单尚未提交?
您是否尝试过使用经典的 $.ajax() 函数:
$('.remote_form').submit(function(){
$.ajax({
beforeSend: function(){
// do something
}
});
});