2013-03-12 51 views
1

我想在提交下面显示的类的任何表单后调用函数。然而,这似乎并没有为我工作(表单提交,但提交按钮保持活动,加载图像未显示)。使用jquery提交表单后调用函数

$(document).ready(function() { 
    $('.uniForm').submit(function() { 
     $('#loadingImage').show(); 
     $(':submit',this).attr('disabled','disabled'); 
     return true; 
    }); 
}); 

下面是一些HTML:

<form class="uniForm" id="formABC"> 
//...form.... here 
</form> 

<img src="loadimage.gif" style="display: none;" id="loadingImage"> 

没有人看到什么内在的错误这一点,将阻止正常工作的事情?

我有一种感觉,它只是没有被正确调用。我可以通过这样的HTML来自己调用它吗?

<button type="button" class="primaryAction" alt="Submit Form" onclick="$('#formABC').submit();">Submit Form</button> 
+0

您希望在重新加载页面加载图像? – 2013-03-12 12:39:47

+0

基本上,因为处理表单需要几秒钟的时间,所以我希望禁止再次按下提交按钮,同时还要显示加载图像,以便他们可以看到它被按下。 – Shackrock 2013-03-12 12:40:22

+0

您的当前窗体是否有任何机会使用'name =“submit”'输入元素? – Boaz 2013-03-12 12:42:09

回答

3

追随你的评论,似乎处理函数的结合到submit事件可能发生在form元素已被加载到DOM之前。

理想情况下,您应该只在DOM完成加载后绑定事件处理程序。

例如:

$(document).ready(function() { 
    $('.uniForm').submit(function() { 
     ... 
    }); 
}); 
+0

修改'$(this.form).submit();'这似乎并没有做到。就好像它在等待提交完成之前完成该功能,这是否可能? – Shackrock 2013-03-12 13:21:02

+0

提交表单时,会立即触发'submit'事件。通过添加'alert('submitted!')'或类似的函数来确保处理程序实际上是绑定和正确执行的。如果在提交时没有看到提示提示,则说明有问题。另外,请确保在提交之前和之后没有JS错误。 – Boaz 2013-03-12 13:37:37

+0

好的...所以警报显示出来。所以我不得不多看看这一点。也许我的图像显示代码搞砸了,让我玩弄它。 – Shackrock 2013-03-12 13:57:56

0

尝试其他的东西:

$('.uniForm input[type=submit]').click(function(){ 
    $('.uniForm').submit(); 
    //doStuffafterSubmit 
}); 
0

放在提交输入/按钮的ID和尝试这个办法:

$('#mySubmitButton').click(function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    $(this).attr('disabled','disabled'); 
    $('#loadingImage').show(function() { 
     $(this.form).submit(); 
    }); 

}); 
+0

我也试过这个。这一个会正确加载图像,但不会提交表单。 – Shackrock 2013-03-12 13:21:28

+0

@ Shackrock - 它输出任何错误?尝试通过'$('#myForm')。submit();' – 2013-03-12 13:28:23