2012-04-08 40 views
1

我想驗證一個窗體使用Ajax和onchange函數。基本上我想在焦點從輸入框中消失後進行自動驗證。然後,如果它是空白/無效條目,它會聲明一個錯誤。onchange不會打印出空的輸入錯誤

出於某種原因,驗證適用於無效條目,但不適用於第一次嘗試時的空輸入(意思是如果我刷新頁面並按標籤前往第二個字段框,則沒有錯誤)。有趣的是我刪除一個條目後空錯誤正常工作。我試過使用$ var =「」或空($ var),但我仍然得到相同的結果。

下面是PHP的一部分:

if(isset($_GET["isbn"])) 
{ 
    $isbn = $_GET["isbn"]; 

    $error=""; 

    if(empty($isbn) || !preg_match("/^\d{12}$/", $isbn)) 
    { 
     $error .= "Please enter a valid ISBN"; 
     echo $error; 
    } 
    else 
     echo $error; 

} 

這裏是休息:

<script type="text/javascript">       
    function validateIsbn(keyword) 
    { 
     var xhr = new XMLHttpRequest(); 

     xhr.onreadystatechange = function() { 

      if(xhr.status == 200 && xhr.readyState == 4) 
      { 
       var res = xhr.responseText; 
       document.getElementById("err1").innerHTML = res; 
      } 
     } 

     xhr.open("get","validate_isbn.php?isbn=" + keyword,true); 
     xhr.send(); 
    } 

    </script> 

<form method="get" action=""> 


      <label class="top-label">ISBN:</label> 
      <input name="isbn" id="isbn" type="text" onchange="validateIsbn(this.value)"/> 
      <div id="err1"> </div> 
      <p></p><p></p> 
+1

它不起作用,因爲您使用onchange事件,並且如果該字段爲空,則該函數將不會觸發,因爲沒有任何更改。 – 2012-04-08 02:47:08

+2

嘗試使用onblur。 – 2012-04-08 02:50:08

回答

0

你說你要自動驗證一旦焦點從輸入框不見了。在這種情況下觸發的事件是onblur,而不是onchange