Страница не перенаправляется при нажатии клавиши Enter

Итак, у меня есть текстовое поле, в котором пользователь должен ввести пароль, чтобы загрузить PDF-файл. Если пароль правильный, он перенаправляет пользователя на URL-адрес файла PDF, если пароль неверен, он перенаправляет пользователя на другую страницу, которая называется неправильной (incorrect.html).

Все работает нормально. Единственная проблема заключается в том, что когда вы нажимаете клавишу Enter, страница не перенаправляется. Это работает только при нажатии на кнопку «Отправить».

Есть ли способ исправить это?

Большое спасибо!

Введите текстовое поле и нажмите кнопку "Отправить"

<form name="login">
<input class="gen-label" type="text" name="pass" size="17" onKeyDown="if(event.keyCode==13) event.keyCode=9;">
<input class="button submit" type="button" value="Submit"  onClick="TheLogin(this.form)">
</form>

JavaScript

<script>
function TheLogin() {
var password = 'Pass1';
if (this.document.login.pass.value == password) {
  top.location.href="file_to_download.pdf";
}
else {
  location.href="incorrect.html";
  }
}
</script>

person Nesta    schedule 04.04.2014    source источник
comment
<input type="submit" вместо кнопки.   -  person Patsy Issa    schedule 04.04.2014
comment
Это вообще не очень безопасно. Вы храните пароль в виде простого текста в источнике? Вы должны отправить форму в скрипт на стороне сервера, такой как файл PHP или аналогичный, сравнить там пароль и заставить скрипт выполнить перенаправление на стороне сервера к документу, если пароль правильный.   -  person HaukurHaf    schedule 04.04.2014


Ответы (1)


<input type="submit" Запускает отправку формы при вводе, кнопка не будет.

Другое дело — изменить код else на показанный ниже для перенаправления.

<input class="gen-label" type="text" name="pass" size="17" onKeyDown="if(event.keyCode==13) event.keyCode=9;">
<input class="button submit" type="submit" value="Submit"  onClick="TheLogin(this.form)">
</form><script>
function TheLogin() {
var password = 'Pass1';
if (this.document.login.pass.value == password) {
  top.location.href="file_to_download.pdf";
}
else {
  window.location="incorrect.html";
  }
}
person Florescent Ticker    schedule 04.04.2014
comment
Только что протестировал, но это не сработало. Я только что заметил: когда вы вводите что-либо, скажем, 12345, URL-адрес меняется на url_path.html?pass=12345. - person Nesta; 04.04.2014
comment
это означает, что форма отправлена. Параметры формы добавляются в конце URL-адреса в случае метода get. Чтобы избежать этого, используйте внутри тега формы method=POST. - person Florescent Ticker; 04.04.2014
comment
Извините, не могли бы вы показать мне, где именно я должен ввести method=POST. я немного растерялся - person Nesta; 04.04.2014
comment
Это все еще не работает для меня. Показать вам реальный сайт? - person Nesta; 04.04.2014
comment
Ну, когда я нажимаю «Отправить» или когда я нажимаю «Ввод», ничего не происходит. Он только меняет URL-адрес на любой проход, который я набираю - person Nesta; 04.04.2014
comment
вы изменили сценарий на ›‹script› function TheLogin() { var password = 'Pass1'; if (this.document.login.pass.value == пароль) { top.location.href=file_to_download.pdf; } еще { window.location=incorrect.html; } }‹/скрипт› - person Florescent Ticker; 04.04.2014
comment
Убедитесь, что у вас есть неверный.html в правильном месте, иначе он ответит ошибкой 404. - person Florescent Ticker; 04.04.2014
comment
Да я перепроверил и все на месте - person Nesta; 04.04.2014
comment
Это не происходит, когда вы нажимаете клавишу Enter. Демонстрационный пример имеет мой исходный код. Я проверил это с вашим, и это не сработало. - person Nesta; 04.04.2014
comment
в форме добавить onsubmit=TheLogin(this.form) - person Florescent Ticker; 04.04.2014