1

Ajax と onchange 関数を使用してフォームを検証しようとしています。基本的に、フォーカスが入力ボックスから消えたら、自動検証が必要です。空白/無効なエントリの場合、エラーが表示されます。

何らかの理由で、検証は無効なエントリに対して機能しますが、最初の試行では空の入力に対して機能しません (つまり、ページを更新してタブで 2 番目のフィールド ボックスに移動すると、エラーは発生しません)。面白いのは、エントリを消去した後、空のエラーが正常に機能することです。$var = "" または empty($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>
4

1 に答える 1

0

入力ボックスからフォーカスが外れたら、自動検証が必要だと言います。その場合にトリガーされるイベントは、 onchangeではなくonblurです。

于 2012-04-28T13:09:16.433 に答える