1

一般的なアラート ボックスを使用すると、フォームの検証は正常に機能しますが、JQuery スクリプトを使用してアラート ボックスの見栄えを良くしようとすると、返される値が false であるにもかかわらず、フォームが検証および送信されます。

機能する標準のアラートボックス

function validate(){
    if( document.audit_form.audit_name.value == "" )
       {
         alert( "Please select a name for your audit" );
         document.audit_form.audit_type.focus() ;
         return false;
     }
return true;
}

codecanyon の jQuery MsgBox で試してみてください

function validate(){
    if( document.audit_form.audit_name.value == "" )
       {
         $.msgbox("Please select an audit type", 
                    {
                        type:"alert",
                        buttons: [
                            {type: "submit", value: "Ok"}
                        ]
                    },
                    function(result){

                    if (result && result=='Ok'){
                        return false;
                    }
            });
       }
return true();
}

Apprise で 2 回試行する

function validate(){
    if( document.audit_form.audit_name.value == "" )
       {
         apprise('Please enter a name for your audit?', {'textOk' : 'Ok',}, function(r) {

            if(r) { 
                return( true );
            } else { 
                return (false);
            }
        });
       }
}

3 つのすべてのインスタンスで、警告ボックスが表示されるべきときに表示されますが、JQuery バージョンではフォームは引き続き送信されます。関数は次を使用して呼び出されます

 <form id="audit_form" name="audit_form" method="post" enctype="multipart/form-data" 
action="<?php echo $_SERVER['PHP_SELF']; ?>" onsubmit="return validate();">
4

1 に答える 1

0

$.msgboxと の両方appriseが関数をブロックしておらず、関数のコールバックの前に結果が返される場合は、ロジックを変更する必要があります。基本的に、フォーム送信次のようになります。

$('#audit_form').submit(function(event){
     event.preventDefault();
     yourUIAlertFunction(..., ..., function(isSuccess){
          if(isSuccess){
              submitFormLogic();
          } else {
              hideAlertAndShowErrors();
          }
     });
});
于 2013-08-22T23:33:19.000 に答える