2

Web サイトの 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()入力の値です。よろしくお願いします!:)

4

2 に答える 2

11

usernameは有効なtype属性値ではありません。代わりにあなたが望んでいたと思いますtext、そしてそれはそれが認識されないタイプに遭遇したときにブラウザがデフォルトにするものです。したがって、コードを実行すると、input実際にはのタイプがありtext、ではありませんusername

有効な属性値の完全なリストについては、仕様を参照してください。type


補足-jQueryのバージョンを1.3.2または(できれば)上記にアップグレードすると、この問題は解決します。私はあなたが現在使用している古代の1.2.6からできるだけ早く離れます!

ここで動作バージョン(jQuery 1.7.2)を参照してください。含まれているバージョンのjQueryを1.2.6に変更するundefinedと、質問で言うように、ログに記録されます。

于 2012-07-16T19:24:17.490 に答える
4

"username"は有効typeではありません、として扱われます"text"

代わりに使用name="username"してください$("input[name=username]")

有効なタイプのリストは次のとおりです

于 2012-07-16T19:24:28.413 に答える