1

我正在尝试使用 Ajax 和 onchange 函数验证表单。基本上,一旦焦点从输入框中消失,我想要自动验证。然后,如果它是空白/无效条目,它将声明一个错误。

出于某种原因,验证适用于无效条目,但不适用于第一次尝试的空输入(这意味着如果我刷新页面并按选项卡转到第二个字段框,则没有错误)。有趣的是,在我删除条目后,空错误可以正常工作。我试过使用 $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

您说一旦焦点从输入框中消失,您就想要自动验证。在这种情况下触发的事件是onblur,而不是onchange

于 2012-04-28T13:09:16.433 回答