Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверка заполнения формы (https://javascript.ru/forum/dom-window/67099-proverka-zapolneniya-formy.html)

Евгений Базаров 29.01.2017 02:04

Проверка заполнения формы
 
Абсолютный новичок в JS и не знаю всех его возможностей.
Есть самая простая форма:
<form method="get">
     <input type="password"  value="Пароль" autofocus required>
     <input type="submit" value="ВОЙТИ" onClick='location.href="1.html"'>
</form>

Я хочу узнать про возможность написания скрипта, который будет проверять содержимое поля "Пароль", и если там "123456" (заданный мной пароль), submit становится доступен для нажатия и переводит по указанной ссылке. Если в поле пусто, или там не 123456, то submit не переводит по ссылке, disabled.
Пишу сайт в html.
Возможно ли написать такой скрипт? Если да, то я буду премного благодарен, если вы приведёте пример такого скрипта, а я сам постараюсь его разобрать, что почему и как работает.

laimas 29.01.2017 06:14

Цитата:

Сообщение от Евгений Базаров
Я хочу узнать про возможность написания скрипта, который будет проверять содержимое поля "Пароль", и если там "123456"

Клиенту никоим образом пароли не должны быть доступны, пароль и даже не он сам, а его хеш хранится на сервере, и доступ к чему-то должен давать сервер.

Евгений Базаров 29.01.2017 11:12

Или я Вас не правильно понял, или Вы меня.
Для меня подойдёт вариант, что этот пароль будет прописан в скрипте, и его можно будет увидеть в исходном коде.
Мне представляется такая цепочка: пользователь вводит пароль - скрипт проверяет введенный данные - если там 123456, то submit доступен, иначе submit недоступен.
Не силён в синтаксисе JS, но подозреваю, что там обыкновенные if {не 123456} then {submit disabled} else {submit по умолчанию}
Примерно так я себе это представляю. Ошибаюсь?

laimas 29.01.2017 11:18

Цитата:

Сообщение от Евгений Базаров
Для меня подойдёт вариант, что этот пароль будет прописан в скрипте

Вам может что угодно подойти, а вот вашим пользователям нет. Зачем нужна эта идиотская проверка на доступ к чему-то, если любой кому не лень может посмотреть в исходниках что сравнивается? А если сравнивать на клиенте, то каким образом вы будет знать какой пароль у текущего клиента, все отдать которые есть на сервере?

Вы вообще соображаете что говорите? Вы ответственны за хранение конфиденциальных данных клиентов, а вы их хотите добровольно вывалить для всеобщего обозрения.

Клиент вводит логин/пароль, отправляет серверу, сервер проверят есть ли такой клиент и по результату принимает решение. И только так, и никак иначе.

Евгений Базаров 29.01.2017 11:31

У меня абсолютно несерьезный проект, там не будет большого количества пользователей, так сказать, только для своих (15-20 человек - примерно школьный класс), и пароль будет у всех один. Я прекрасно понимаю, что это очень ненадёжно, но мне надёжность и не нужна! Не те масштабы! Это во-первых.
Во-вторых я это делаю никак не для безопасности, а больше для создания эффекта конфиденциальности. Ежу понятно, что можно спокойно обойти эту страницу с паролем, зная url следующей страницы, но всё делается исключительно для эффекта.
В-третьих логина нет, только пароль и кнопка "вход".
Если Вы знаете, как написать такой скрипт, и поможете мне с этим, я буду Вам премного благодарен.

рони 29.01.2017 11:35

Евгений Базаров,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

  <script>
window.addEventListener('DOMContentLoaded', function() {
  var form = document.querySelector('form'),
  password = form.querySelector('[type="password"]');
  form.addEventListener('submit', function(event) {
   password.value != "12345" && event.preventDefault();
  },false);
    });
  </script>
</head>

<body>
<form method="get" action="1.html">
  <input type="password"  value="Пароль" autofocus required>
  <input type="submit" value="ВОЙТИ" >
</form>


</body>
</html>

Евгений Базаров 29.01.2017 11:38

рони,
СПАСИБО! То, что нужно!

рони 29.01.2017 11:45

Евгений Базаров,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<style type="text/css">
[type="submit"][disabled] {
  background-color: #FF3D3D;
}
[type="submit"] {
  background-color: #009900;
}
</style>
  <script>
window.addEventListener('DOMContentLoaded', function() {
  var form = document.querySelector('form'),
  password = form.querySelector('[type="password"]'),
  submit = form.querySelector('[type="submit"]');
  form.addEventListener('submit', function(event) {
   password.value != "12345" && event.preventDefault();
  },false);
  password.addEventListener('input', function(event) {
   password.value != "12345" ? submit.setAttribute("disabled", "disabled") : submit.removeAttribute("disabled");
  },false);

   });
  </script>
</head>

<body>
<form method="get" action="1.html">
  <input type="password"  value="Пароль" autofocus required>
  <input type="submit" value="ВОЙТИ"  disabled="disabled">
</form>


</body>
</html>


Часовой пояс GMT +3, время: 12:55.