为什么我的函数checkUser()未定义?

Mun*_*ead 0 html javascript php forms

我在我的注册页面中创建了一个简短的脚本,它定义了function checkUser(user)第6行.

现在在包含注册表单HTML的代码的底端,我已经onBlur='checkUser(this)<input>命名添加了一个内联脚本'user'.

但是,当此对象失去焦点并且应该触发onBlur函数时,javascript控制台会声明function checkUser尚未定义.为什么会这样?

我唯一的猜测是脚本和html是分开的字符串,但我不知道.

我为此示例附加了signup.php的完整PHP代码.

<?php //signup.php
include_once 'header.php';

echo <<<END_
<script type='text/css'>
function checkUser(user) {
    "use strict";
    if (user.value == '') {
        O('info').innerHTML = '';
        return;
    }

    params = "user=" + user.value;
    request = new ajaxRequest();
    request.open("POST", "checkuser.php", true)
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", params.length);
    request.setRequestHeader("Connection", "close");

    request.onreadystatechance = function() {
        "use strict";
        if (this.readyState == 4)
            if (this.status == 200)
                if (this.responseText != null)
                    O('info').innerHTML = this.responseText;
    }
    request.send(params);
}
</script>$n
<div class='main'><h3>Please enter your details to sign up</h3>
END_;
$salt = "user";
$error = $user = $pass = "";
if (isset($_SESSION['user'])) destroySession();

if (isset($_POST['user']) &&
    isset($_POST['pass'])) {
    $user = sanitizeString($_POST['user']);
    $pass = sanitizeString($_POST['pass']);
    $token = md5($salt, $pass);

    if ($user == "" || $pass == "") {
        $error = "Not all fields were entered.</br></br>";
    } else {
        if (mysql_num_rows(queryMysql("SELECT * FROM members WHERE user='$user'"))) {
            $error = "That username already exists.</br></br>";
        } else {
            queryMysql("INSERT INTO members VALUE('$user', '$token')");
            die ("<h4>Account created</h4>Please Log in.</br></br>");
        }
    }
}

echo <<<END_
<form method='post' action='signup.php'>$error
<span class='fieldname'>Username</span>
<input type='text' maxlength='16' name='user' value'$user' onBlur='checkUser(this)'/><span id='info'></span></br>
<span class='fieldname'>Password</span>
<input type='text' maxlength='16' name='pass' value='$pass'/></br>
<span class='fieldname'>&nbsp;</span>
<input type='submit' value='Sign up' />
</form></div></br></body></html>
END_;
?>
Run Code Online (Sandbox Code Playgroud)

jav*_*ker 6

改变标签

<script type='text/css'> 
Run Code Online (Sandbox Code Playgroud)

通过

<script type='text/javascript'>
Run Code Online (Sandbox Code Playgroud)

  • 更好的是,摆脱`type`属性. (2认同)