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();
                });
        }
             }
     });
});

そして、送信ボタンを2回クリックする必要があり、ポップアップ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

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 に答える
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 に答える