簡體   English   中英

即使驗證返回false,表單仍會提交

[英]Form still submits even though validation returns false

當我使用通用警報框時,表單驗證可以正常工作,但是如果我嘗試使用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嘗試兩次

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

在所有這三種情況下,警報框都會顯示應有的時間,但仍使用JQuery版本顯示表單。 這些函數使用

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

無論$.msgboxapprise不會阻止功能,並返回結果之前的功能回調,你應該改變你的邏輯。 基本上,這就是你如何提交表單應該是這樣的:

$('#audit_form').submit(function(event){
     event.preventDefault();
     yourUIAlertFunction(..., ..., function(isSuccess){
          if(isSuccess){
              submitFormLogic();
          } else {
              hideAlertAndShowErrors();
          }
     });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM