2

我完全是 jQuery 和 js 的菜鸟,我确信有一个比我想出的更优雅的解决方案 - 但这是我到目前为止所拥有的,我很难过。

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

我的原始解决方案效果很好,无论表单是否已完全填写,当访问者单击提交时都会显示弹出 div - 如果表单已完全填写,一切都按预期工作 - 如果他们错过了字段验证引擎显示缺失字段通知和我的弹出 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 出现但表单没有提交。

4

4 回答 4

2
$('#form1').validationEngine('attach', {
    onValidationComplete: function(form, status){
        if (status == true) {                   
            startProgressBar();
            form.validationEngine('detach');
            form.submit();

        }
    }           
});
于 2011-11-23T22:21:13.263 回答
0
jQuery("#approvalForm").validationEngine('attach', {
    onValidationComplete: function(form, status){
    if (status == true) {
        $('#progress').show();
        $('#approvalForm').trigger('submit');
    }else{
        $('#progress').hide();
    }
}

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

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

于 2011-03-30T14:25:58.790 回答
0

你需要

$('#approvalForm').validationEngine('attach', {
    onValidationComplete: function(form, status){
        if (status) {                   
            startProgressBar();
            YouFunctionPreLoad();
            return true;
            //form.submit();
        }
    }           
});
于 2013-05-21T02:45:19.323 回答
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>
于 2011-08-12T14:09:39.773 回答