Javascript 仅当表单成功提交时发生jQuery事件

Javascript 仅当表单成功提交时发生jQuery事件,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我有一个有验证的表格。目前,发布表单最多需要10秒钟。我想在表单提交时加载loading.gif。目前的问题是,即使表单未通过验证,gif也会加载 我需要一种仅在表单有效时才能加载gif的方法,以下是我当前的脚本: $('form').submit(function() { $('#gif').css('visibility', 'visible'); return true; }); 我正在使用parsley.js进行验证 $('form').submit(function(

我有一个有验证的表格。目前,发布表单最多需要10秒钟。我想在表单提交时加载loading.gif。目前的问题是,即使表单未通过验证,gif也会加载

我需要一种仅在表单有效时才能加载gif的方法,以下是我当前的脚本:

$('form').submit(function() {
    $('#gif').css('visibility', 'visible');
    return true;
});
我正在使用parsley.js进行验证

$('form').submit(function() {
    var $form = $(this);
    $form.parsley().validate();

    if ($form.parsley().isValid())
       $('#gif').css('visibility', 'visible');
});
在显示gif之前,通过显式调用
validate
,使用parsley.js确定表单是否有效


另外,使用
表单
作为选择器时要小心。每页可以有多个表单。如果可能,请使用id。

如果要在执行请求之前显示/隐藏加载框,则无需使用默认的form.action属性来发布数据。您需要这样做smth:

$('#form').submit(function(event) {
   /* stop form from submitting normally */
   event.preventDefault();
   var $form = $(this);
   if(this.checkValidity()) { // form validation based on HTML 5 
       $('#gif').css('visibility', 'visible');
       /* Send the data using post */
       var posting = $.post($form.attr('action'), $form.serialize());
       posting.done(function() {
          console.log("Request was executed successfully!!!")
       }).always(function() {
           // hide loading bar in any way on success/error
           $('#gif').css('visibility', 'hidden');
       })
   }
})

通过验证
-哪个验证?客户端?服务器端?客户端,parlsey.js基本上只是在表单输入中添加所需的标记。如果您创建了一个fiddle,那么parlsey.js就很好了。因为从你所提到的,它不应该起作用。你试图实现的目标与你所提到的正好相反。您希望在for提交之前显示
GIF
,因为一旦提交表单,页面将重新加载(如果您不使用ajax)。因此,实际上您正在显示
GIF
,显示返回结果所需的
parlsey.js
时间。所以请分享一把小提琴!谢谢。太好了,就这样谢谢,我会在它允许的时候把它标记正确;)