Форма «Отправить» и прямая ссылка на созданный Javascript URL

0

У меня есть форма входа в систему, которая по завершении отправляет пользователей на страницу с URL-адресом, сгенерированным JavaScript (разрешая мне передать переменную JavaScript в мой PHP-скрипт с использованием $ _GET). Тем не менее, для этого в настоящее время кнопка "Логин" - это "тип =" кнопка "". Хотя все работает, это означает, что пользователи не могут войти, нажав Enter; они должны на самом деле нажать кнопку "Вход". Есть ли способ, которым я могу "Отправить" форму, но все же указывая на URL, сгенерированный JavaScript?

Это кажется довольно простой концепцией, которая говорит мне, что я могу приблизиться к ней неправильно. Любые рекомендации приветствуются.

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;
    }
}
  • 0
    поместите другое имя вместо _self и установите его в качестве target для form , а затем отправьте форму
  • 0
    @EL Как вы тогда открываете новую страницу в том же окне?
Показать ещё 1 комментарий
Теги:
forms

2 ответа

1
Лучший ответ

Вместо того чтобы открыть PHP страницы с помощью JavaScript, вам необходимо изменить форму action динамически, чтобы указать на генерируемую ссылку.

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;
    }
}
  • 0
    Так что я могу заставить это работать частично. Когда я внес эти изменения, я смог получить форму «Отправить» и перейти на «home.php». Однако остальная часть URL-адреса - «? User_id = jsmith & pswrd = smithpassword», а не «? Display_name = JohnSmith». Есть идеи, почему это может быть?
  • 0
    @ jackel414 add method="post" к тегу form в вашем html
Показать ещё 2 комментария
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>
  • 0
    Это было одно из решений, которые я попробовал. Не могу заставить его что-либо делать, кроме как обновить страницу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню