$(“input [type = username]”)。val()返回undefined

时间:2012-07-16 19:22:50

标签: javascript jquery html ajax

我正在为我的网站创建一个AJAX日志表格;但是,我遇到了一些我认为是jQuery中的错误的东西。

代码示例:

<!DOCTYPE html>
<html>
    <head>
        <title>Log In</title>
    </head>
    <body>
        <div class="errors"></div>
        <input type="username" placeholder="username">
        <input type="password" placeholder="password">
        <input type="submit" value="Log In">
    </body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    <script>
        $('input[type=submit]').click(function(){
            $(".errors").load(window.location.protocol + "//" + window.location.host + "?username=" + $("input[type=username]").val() + "&password=" + $("input[type=password]").val());
            return false;
    });
    </script>
</html>

我知道这不是服务器端问题。 $("input[type=username]").val()的返回值为undefined,而$("input[type=password]").val()的返回值为输入值。 谢谢大家! :)

2 个答案:

答案 0 :(得分:10)

username不是有效的type属性值。我猜你想要text,而这就是浏览器在遇到无法识别的类型时会默认的内容。因此,当您的代码运行时,input的实际类型为text,而不是username

有关有效type属性值的完整列表,请参阅specification


附注 - 将您的jQuery版本升级到1.3.2或(最好)以上将解决此问题。我会尽快远离你目前正在使用的古代1.2.6!

查看working version (jQuery 1.7.2) here。将包含的jQuery版本更改为1.2.6,它将记录undefined,如您在问题中所述。

答案 1 :(得分:4)

"username"不是有效type,会被视为"text"

使用name="username"$("input[name=username]")代替

Here's a list of valid types