0

完了すると、JavaScript で生成された URL を含むページにユーザーを送信するログイン フォームがあります ($_GET を使用して JavaScript 変数を PHP スクリプトに渡すことができます)。ただし、これを行うために、ログイン ボタンは現在 'type="button"' になっています。すべてが機能しますが、ユーザーが Enter キーを押してログインできないことを意味します。実際にログイン ボタンをクリックする必要があります。JavaScript で生成された URL をポイントしたまま、フォームを「送信」する方法はありますか?

これは非常に基本的な概念のように思えますが、そもそも間違った方法でアプローチしている可能性があります。任意のガイダンスをいただければ幸いです。

HTML:

<form name="login">
    Username: <input type="text" name="user_id"/>
    Password: <input type="password" name="pswrd"/>
    <input type="button" onclick="check(this.form)" value="Login"/>
</form>

JavaScript:

function check(form) {
    var userCredentials = [["jsmith", "smithpassword", "John Smith"], ["jdoe", "doepassword", "Jane Doe"]];
    var credCheck = 0;
    for (var i = 0; i < userCredentials.length; i++) {
        if (userCredentials[i][0] == form.user_id.value) {
            credCheck += 1;
            var displayName = userCredentials[i][2];
            if (userCredentials[i][1] == form.pswrd.value) {
                window.open("home.php?display_name=" + displayName, "_self");
            } else {
                alert('The username and password do not match.');
                return false;
            }
        }
    }
    if (credCheck == 0) {
        alert('The username entered is not valid.');
        return false;
    } else {
        return true;
    }
}
4

2 に答える 2

1

actionJavaScript 経由で php ページを開く代わりに、生成された URL を指すようにフォームを動的に変更する必要があります。

HTML:

<form name="login">
    Username: <input type="text" name="user_id"/>
    Password: <input type="password" name="pswrd"/>
    <input type="submit" onclick="check(this.form)" value="Login"/>
</form>

JavaScript: (9 行目と 10 行目を変更)

function check(form) {
    var userCredentials = [["jsmith", "smithpassword", "John Smith"], ["jdoe", "doepassword", "Jane Doe"]];
    var credCheck = 0;
    for (var i = 0; i < userCredentials.length; i++) {
        if (userCredentials[i][0] == form.user_id.value) {
            credCheck += 1;
            var displayName = userCredentials[i][2];
            if (userCredentials[i][1] == form.pswrd.value) {
                form.action = "home.php?display_name=" + displayName;
                return true;
            } else {
                alert('The username and password do not match.');
                return false;
            }
        }
    }
    if (credCheck == 0) {
        alert('The username entered is not valid.');
        return false;
    } else {
        return true;
    }
}
于 2013-11-11T22:14:58.670 に答える
0

あなたは試すことができます:

<form name="login" onsubmit="check(this)">
    Username: <input type="text" name="user_id"/>
    Password: <input type="password" name="pswrd"/>
    <input type="submit" value="Login"/>
</form>
于 2013-11-11T22:14:54.070 に答える