2013-08-22 114 views
1

當我使用通用警報框時,表單驗證工作正常,但如果嘗試使用JQuery腳本使警報框看起來不錯,表單將驗證並提交,儘管返回的值爲假即使驗證返回false,表單仍然會提交

標準的警告框從codecanyon

工作

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

嘗試一個與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(); 
} 

嘗試兩次與愛普瑞斯

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

回答

0

兩個$.msgboxapprise不阻塞函數調用,結果之前的功能回調返回,你應該改變你的邏輯。基本上這就是你的表單如何提交should看起來像:

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

感謝,任何建議作出的修改? – tatty27

+0

@ tatty27,我更新了我的答案。 –

+0

六,謝謝,我只是想弄清楚如何將它應用到任一jQuery的功能,所以我可以風格我的警報框。我相當新的JavaScript等 – tatty27

相關問題