2011-03-05 72 views
2

我是jQuery和js的总noob,我确信有一个更优雅的解决方案,然后我想出了 - 但这是我迄今为止,我很难过。jQuery validationEngine

我有一个表单需要很长时间才能提交出于各种原因 - 我正在使用validationEngine来验证内联表单字段的效果很好。然后我需要添加一个弹出式窗口div来告诉访问者请耐心等待为什么应用程序执行所请求的搜索。

我原来的解决方案非常好,接受弹出div显示当访问者点击提交,无论表格是否完全填写 - 它的形式是完全填写的一切都按预期工作 - 如果他们错过了一个领域validationEngine显示缺少的字段通知,我弹出的div仍然显示,但显然表单不提交。

jQuery(document).ready(function(){ 
    jQuery("#approvalForm").validationEngine('attach'); 
}); 

    $(document).ready(function() { 
     $('#approvalForm').submit(function() { 
      $('#progress').show(); 
      }); 
     }); 

所以经过一番研究,我做了一些修改,导致验证码:与此代码恰好

jQuery(document).ready(function(){ 
    jQuery("#approvalForm").validationEngine('attach', { 
     onValidationComplete: function(form, status){ 
     if (status == true) { 
      $('#approvalForm').submit(function() { 
        $('#progress').show(); 
       }); 
     } 
      } 
    }); 
}); 

而现在一切正常,只是你必须点击两次提交按钮,当你弹出div弹出,但表单不提交。

+0

你碰巧有最新版本的在线地方?另外 - 请注意,如果您将“提交”处理程序附加到表单,则必须手动阻止默认事件(提交表单),例如在处理函数结束时返回'false'。 [我快速查看了插件的来源(我不知道),看起来像(不要引用我)他们会首先传递状态,然后是表单(在2.0版本中) ?] – polarblau 2011-03-05 20:51:34

+0

当前版本在这里https://www.haloadvance.com/testsite/ - 但是它提交这个之后的形式。 - 如果有帮助,我可以提供页面的完整代码。 – Tom 2011-03-05 22:06:25

回答

0
jQuery("#approvalForm").validationEngine('attach', { 
    onValidationComplete: function(form, status){ 
    if (status == true) { 
     $('#progress').show(); 
     $('#approvalForm').trigger('submit'); 
    }else{ 
     $('#progress').hide(); 
    } 
} 

但我认为,如果你想显示加载弹出,
必须使用jQuery.ajax

它有beforeSend功能,将浏览器之前运行发送请求。

0

onValidationComplete停止表单提交,并让您自己处理事情。在这种情况下,您想要做的就是在验证通过时显示加载弹出窗口。相反,你可以做的是钩入验证的结果,如果已经通过显示加载弹出窗口。表单提交将会正常激活。

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery("#approvalForm").validationEngine('attach'); 
    jQuery("#approvalForm").bind("jqv.form.result", function(event, errorFound) { 
     if(!errorFound) $('#progress').show(); 
    }) 
}); 
</script> 
2
$('#form1').validationEngine('attach', { 
    onValidationComplete: function(form, status){ 
     if (status == true) {     
      startProgressBar(); 
      form.validationEngine('detach'); 
      form.submit(); 

     } 
    }   
}); 
0

你需要

$('#approvalForm').validationEngine('attach', { 
    onValidationComplete: function(form, status){ 
     if (status) {     
      startProgressBar(); 
      YouFunctionPreLoad(); 
      return true; 
      //form.submit(); 
     } 
    }   
}); 
相关问题