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>
它不起作用,因爲您使用onchange事件,並且如果該字段爲空,則該函數將不會觸發,因爲沒有任何更改。 – 2012-04-08 02:47:08
嘗試使用onblur。 – 2012-04-08 02:50:08