1
私はAjaxとonchange関数を使用してフォームを検証しようとしています。基本的には、入力ボックスからフォーカスがなくなると自動検証が必要です。それが空白/無効なエントリの場合、それはエラーを述べます。onchangeは空の入力に対してエラーを出力しません
何らかの理由で、無効なエントリに対して検証が行われますが、最初の試行で空の入力には機能しません(つまり、ページを更新して2番目のフィールドボックスに移動するとエラーは発生しません)。面白いのは、エントリを消去した後、空のエラーが正常に機能することです。私は$ 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イベントを使用しているため、フィールドが空白の場合は機能しません。変更されていないため、この関数はトリガーしません。 –
代わりにonblurを試してください。 –