2014-01-28 25 views
0

這個php編碼正確顯示錯誤信息。但是,我的問題是,如果註冊表格有錯誤,彈出框不會保留。例如,如果您單擊一個鏈接,將會打開一個彈出框。在那個彈出框中,我包含了一個註冊表單。在此註冊表中,所有字段都是強制性的。所以,用戶應該填寫所有的字段。如果他沒有填寫至少一個textfixed php顯示錯誤消息。彈出框不應該關閉,如果用戶在註冊表中有錯誤

我收到了正確的錯誤信息。但是,當我提交整個頁面刷新的表單。所以,彈出框被關閉。我的問題是 - >如果用戶在註冊表單中出現錯誤,該彈出框不應該關閉。怎麼做?

PHP

<?php 
$errname = ""; 
$errmobile = ""; 

$name = trim($_POST["name"]); 
$mobile = trim($_POST["mobile"]); 

if($_POST["form"] == "values") 
{ 
    if(empty($name)) 
    { 
     $errname = '<span>error</span>'; 
    } 
    if(empty($mobile)) 
    { 
     $errmobile = '<span>error</span>'; 
    } 
} 
?> 

HTML

<p>register <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'">here</a></p> 

<div id="light" class="white_content"> 
    <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">Close</a> 
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> 
     <input type="hidden" name="form" value="values" /> 
     name : <input name="name" type="text" value="<?php $_POST["name"]; ?>" /> <?php if(isset($errname)) echo $errname; ?> <br /> 
     mobile : <input name="mobile" type="text" value="<?php $_POST["mobile"]; ?>" /> <?php if(isset($errmobile)) echo $errmobile; ?> <br /> 
     <input type="submit" value="submit" /> 
    </form> 
</div> 
<div id="fade" class="black_overlay"></div> 

回答

1

您可以通過這種方式與AJAX做到這一點,

validation.php

<?php 
    $name = $_POST["name"]; 
    $mobile = $_POST["mobile"]; 

    if($name == "") 
    { 
     echo 'error_n'; 
    } 
    if($mobile == "") 
    { 
     echo 'error_m'; 
    } 
?> 

你的HTML

<p>register <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'">here</a></p> 

<div id="light" class="white_content"> 
    <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">Close</a> 
    <form> 
     <input type="hidden" name="form" value="values" /> 
     name : <input name="name" id="name" type="text" /> <br /> 
     mobile : <input name="mobile" id="mobile" type="text" /> <br /> 
     <input type="submit" value="submit" /> 
    </form> 
</div> 
<div id="fade" class="black_overlay"></div> 

ajax.js

包含該js文件在你HTML

$(function() { 
     $('form').on('submit', function (e) { 
      $.ajax({ 
      type: 'post', 
      url: 'validation.php', 
      data: $('form').serialize(), 
      success: function(msg) { 

       if(msg=='error_n') 
       { 
        $("#name").val('Name required');      
       } 
       if(msg=='error_m') 
       { 
        $("#mobile").val('Mobile required'); 
       } 
      } 
      }); 
      e.preventDefault(); 
     }); 
     }); 
+0

相同的結果。它關閉彈出框,如果我有錯誤.. – Karuppiah

+0

是的它的工作。彈出框現在不關閉。但它不顯示錯誤文本? – Karuppiah

+0

並且還改變了''嘗試提醒(msg);成功後 –

0

你需要之前驗證用JavaScript形式發送到服務器。那麼如果有錯誤,你可以return false。在您輸入補充:

<input type="submit" value="submit" onSubmit = "return validate();"> 

然後javascript函數:

function validate(){ 

    if(valid == false){ 
     return false; 
     alert('error'); 
    } 
} 
+0

這裏,我試圖做服務器端驗證。我不想在這裏做客戶端驗證.. – Karuppiah

+0

然後頁面將始終重新加載,除非您進行AJAX調用 – user2014429

+0

我怎麼能不做頁面刷新? – Karuppiah