2012-05-15 47 views
0

基本上發生了什麼是我有一個PHP表單發送電子郵件。一路上有幾個不同的驗證步驟,這一切都很好。如果在提交表單時出現驗證錯誤,我想要做的就是彈出一個javascript警報。我有這個用下面的PHP工作:PHP表單驗證警報沒有重定向頁面

// Validate email 
if(!filter_var($EmailFrom, FILTER_VALIDATE_EMAIL)) 
{ 
    echo "<script language=javascript>alert('Please Use a Valid Email Address')</script>"; 
    exit; 
} 

警報彈出,但頁面重定向到domain.com/sendemail.php留下一個空白頁面的用戶。我真的很想在沒有重新加載頁面的情況下彈出警報。我將如何做到這一點?

+1

最好的方法是使用Ajax。 – VisioN

回答

0

這是我在創建的一些表單中用來快速驗證它們的腳本。這非常簡單而有效,我希望它能幫助你。

<script type="text/javascript"> 
function validate(){ 
    emailfilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    condition = 1; 
    mensaje = "Complete: "; 
    //Validate 1st input (Check if empty) 
    if (document.formname.forminput1.value.length==0){ 
     condition = 0; 
     msg = msg + "-Input 1 is empty " 
    } 
     //Validate 1nd input (Check email) 
    if (!emailfilter.test(document.formname.forminput1.value)) { 
     condition = 0; 
     msg = msg + "-Input 1 has a invalid email adresss " 
    } 

    if (condition == 0){ 
     alert(msg) 
     document.formname.forminput1.focus() 
     return 0; 
    } 

    //send 
    alert("Form sended."); 
    document.formname.submit(); 
} 
</script> 
0

您可以使用ajax來完成此操作。但是,如果您不想使用ajax,而是在出錯時執行退出,則可以將其重定向回到表單頁面以及查詢字符串參數。

header("Location: http://www.example.com/form.php?error=1"); 

而在你的表單頁面上,你可以把腳本與PHP如果。像

<?php if(isset($_GET['error']) && $_GET['error']==1): ?> 
<script> 
.... 
</script> 
<?php endif; ?> 

這將實現你在找什麼。事實上,您可以根據您的支票執行多項檢查並設置錯誤。但我仍然會建議Ajax會提供更好的用戶體驗。

0

編輯:超級簡單的解決方案,使用jQuery插件的形式:http://jquery.malsup.com/form/

我做一些我的web應用程序的類似的東西,你可能會發現它很有用。

我做我的驗證服務器端,如果我遇到一個錯誤我這樣做:

json_die(array(
    'status' => 'error', 
    'message'=> 'Your error message' 
)); 

和成功:

json_die(array(
    'status' => 'success', 
    'message'=> 'Your success message' 
)); 

的json_die的功能是:

function json_die($array) { 
     header("content-type: application/json"); 
     die(json_encode($array, true)); 
} 

然後在前端我做這樣的事情:

$.post('/your_url', { 
         'your': vars 

        }, function (r) { 

         if(r.status == 'success') { 

          alert(r.message); 

         } else if (r.status == 'error') { 

          alert(r.message); 
          //handle error 

         } else { 
          alert('server exploded/no connection'); 
         } 

        },'json');