Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 8

Не понимаю почему не работает код валидации формы на JavaScript в HTML

24.11.2021, 02:05. Показов 587. Ответов 1

Студворк — интернет-сервис помощи студентам
У меня есть код, и я не понимаю почему он не работает, хотя вроде все написано по правилам.
Я новичок в JavaScript, пожалуйста помогите. В случае ввода в программу не правильной информации не должно отправлять и должно выводить сообщение. Но сообщение не выводится и отправляется и я не понимаю почему.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
                 <script>
                         function name(){
                      
                            if (document.getElementById("username").value == "") {
                                alert("Name bad");
                                return false;
                            }
                            if (document.getElementById("password").value < 6) {
                                alert("Your password bad");
                                return false;
                            }
                            if (document.getElementById("password").value == "") {
                                alert("Password bad");
                                return false;
                            }
             
                        };
 
                    </script>
                    <form action="registrace.php" onsubmit="return name()" method="post">
                        
                        <label for="username">
                            <input type='text' placeholder='Username' id='username' >
                        </label>
                        <label for="password">
                            <input type='password' placeholder='Password' id='password'>
                        </label>
                 
           
                    </form>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2021, 02:05
Ответы с готовыми решениями:

Не понимаю почему не работает код
&lt;?php require &quot;db.php&quot;; $data = $_POST; ?&gt; &lt;?php if (isset($data)){ $errors = array(); if ( trim...

не работает код не понимаю почему
условие Дан текстовый файл. Вывести первое слово текста наибольшей длины. Словом считать набор символов, не содержащий пробелов и...

Не понимаю почему на работает, все же правильно. (html,css,php)
Всем Привет , вопрос: Написал сайт все вроде Ok, но вот какой момент. При заполнении контента правый блок не увеличивается на такую же ...

1
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
24.11.2021, 04:34
Цитата Сообщение от hm34 Посмотреть сообщение
хотя вроде все написано по правилам
Я бы так не горячился.

Во-первых, давать функции имя "name", я бы точно не стал. При том, что слово не зарезервировано, нужно стараться избегать использования не по прямому назначению имен встроенных объектов, свойств и методов JavaScript. А "name" - это свойство объекта window. Кроме того, называть пользовательские функции желательно осмысленно. Вы могли бы назвать, например, validateForm.

Во-вторых, посмотрите на второе условие if. Логика подсказывает, что вы хотели убедится, что длина пароля не менее 6-ти символов. Но на самом деле, оно сравнивает введённое значение с числом 6. То есть, если ввели "qwerty", то сравнение будет следующим: if("qwerty" < 6). В общем, почитайте про свойство length, которое так же работает и массивами Array.length.

В-третьих, пробел - это тоже символ. Поэтому, введя шесть или более пробелов в поле пароля или хотя бы один пробел в поле имя, валидация будет пройдена. Если вас такое не устраивает, то перед проверкой очищайте значения от "лишних" пробелов. Это можно сделать с помощью метода trim() или replace() и регулярного выражения.

В-четвертых, вы дважды обращаетесь к элементу с id = password, получая его значение. Логичней сделать это один раз, сохранив в переменную и работать уже с ней. Сюда же хочу добавить, что в принципе две ваши проверки пароля не нужны, а достаточно одной - кол-во символов, т.к. "пусто" == 0 символов, а значит < 6.

P.S. Т.к. вы только начали изучение JS, то я решил не забивать вам голову массой информации, но после того, как разберётесь с данной задачей, то кроме всего прочего, рекомендую обратить внимание на метод addEventListener.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2021, 04:34
Помогаю со студенческими работами здесь

Не понимаю, почему не работает мой код (Unicode -> UTF-8)
Здравствуйте, передо мной стоит задача написать небольшую программу, осуществляющую преобразование строки в Unicode и её байтовым...

Почему не работает код JavaScript?
Здравствуйте! Скажите пожалуйста, почему не работает код JavaScript (должен в конце показывать произведение элементов массива, а...

код в HTML работает, но не работает в JavaScript
Вот куски кода... &lt;input type=&quot;checkbox&quot; name=&quot;installation_n&quot; onclick=&quot;nast()&quot;/&gt;Наш монтаж&lt;br&gt; &lt;table id=&quot;equip&quot;&gt; ...

Ребята. Как выйти на сессию. Не понимаю я((( почему не работает? А на html странице под полем ввода икса появляется $x>5?2:3); echo
&lt;HTML&gt; &lt;body&gt; &lt;form method=&quot;POST&quot;&gt; x=&lt;input type=&quot;text&quot;name=&quot;x&quot;value=&quot;&quot;/&gt; &lt;input type=&quot;submit&quot;value=&quot;ok&quot;/&gt; &lt;/form&gt; &lt;?php if...

PHP встроенный в HTML. Почему не работает код?
При выполнении возникает ошибка: Undefined variable i; &lt;table&gt; &lt;? foreach (range(1, 100) as $i) {?&gt; &lt;tr&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru