Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186

Валидация нескольких одинаковых форм

30.10.2014, 12:36. Показов 5463. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, имею на одной странице множество одинаковых форм заказа. Все имена полей и айдишники одинаковы, отличается лишь значение поля hidden. Мой код срабатывает корректно лишь на первой форме. Что необходимо изменить?

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$('form#template-order').bind('submit',function(event) {
        $('#template-order-phone').each(function() 
            {
                if($(this).val().length < 7)
                    {
                        event.preventDefault();
                        $('#template-order-phone-div').addClass('has-error');
                        $("#template-order-phone").focus();
                    }
                else
                    {
                        $('#template-order-phone-div').removeClass('has-error');
                    }
            });
    });
P.S.: Про некорректную W3C-валидацию такого html-кода знаю ))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2014, 12:36
Ответы с готовыми решениями:

Много одинаковых форм
Всем привет! Пытаюсь сделать удаление личных сообщений используя ajax jquery. Личные сообщения выглядят так: &lt;div&gt; Сообщение...

Обработка одинаковых форм
Помогите пожалуйста. Есть две одинаковые формы с одинаковыми классами: &lt;form name=&quot;sentMessage&quot; class=&quot;contactForm&quot;...

AJAX несколько одинаковых форм
&lt;div id=&quot;number_index&quot;&gt; &lt;form method=&quot;POST&quot; id=&quot;form_index&quot;&gt; &lt;input type=&quot;text&quot; name=&quot;index&quot; size=&quot;1&quot; value=&quot;222&quot; /&gt; ...

14
37 / 37 / 23
Регистрация: 21.02.2014
Сообщений: 112
30.10.2014, 15:51
сорри если туплю, но разве $('#template-order-phone') вернет несколько элементов?
По-моему он увидит только первый элемент с таким айдишником и дальше просто не будет смотреть. Как вариант, можно поменять айдишник ни класс и обращаться так: $('.template-order-phone')
1
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186
30.10.2014, 17:56  [ТС]
Alekzender, т.е. вариант только присвоить каждой форме свой айдишник? проблема только в том, что тогда код придется увеличить в несколько десятков раз - отдельное правило для каждой формы. в этом-то и суть - сократить количество кода, чтобы не было:

JavaScript
1
$('#template-order-1,#template-order-2,#template-order-3,#template-order-4,#template-order-5')
и т.д...
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
30.10.2014, 18:17
Цитата Сообщение от Eugene-nsk Посмотреть сообщение
т.е. вариант только присвоить каждой форме свой айдишник?
Вам посоветовали не задать для каждой формы свой ID, а всем формам добавить какой-то один класс и его использовать в качестве селектора.
1
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186
31.10.2014, 05:07  [ТС]
Lazy_Den, переправил все поля на классы. Работает, однако условие $(this).val().length < 7 не выполняется. В случае, если символов больше чем < 7, форма не отправляется, а класс has-error не убирается.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$('.template-order').bind('submit',function(event) {
        $('.template-order-phone').each(function() 
            {
                if($(this).val().length < 7)
                    {
                        event.preventDefault();
                        $('.template-order-phone-div').addClass('has-error');
                        $('.template-order-phone').focus();
                    }
                else
                    {
                        $('.template-order-phone-div').removeClass('has-error');
                    }
            });
    });
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
31.10.2014, 10:43
Цитата Сообщение от Eugene-nsk Посмотреть сообщение
если символов больше чем < 7, форма не отправляется
Правильно, т.к. у вас под этим условием есть отмена события - event.preventDefault();
0
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186
31.10.2014, 10:45  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Правильно, т.к. у вас под этим условием есть отмена события - event.preventDefault();
Конечно же неправильно, т.к. событие не должно отменяться в случае length >= 7
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
31.10.2014, 10:48
Цитата Сообщение от Eugene-nsk Посмотреть сообщение
Конечно же неправильно, т.к. событие не должно отменяться
Ну, не я же писал вам этот код. )) Не нужно отменять - уберите preventDefault
0
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186
31.10.2014, 10:55  [ТС]
Lazy_Den, по-моему понятно, что event.preventDefault(); должно срабатывать, когда символов меньше 7, а иначе не должно? Верно?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
31.10.2014, 10:58
Eugene-nsk, Вы написали, что "если символов больше чем < 7"! Знак "меньше" мной воспринят как опечатка. Почему именно так воспринят? Потому что ваш код, в том виде, как я его могу наблюдать - работает правильно.
0
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186
31.10.2014, 11:22  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Потому что ваш код, в том виде, как я его могу наблюдать - работает правильно.
Воот! А теперь возвращаемся "к нашим баранам" из первого поста этой темы - на нескольких одинаковых формах не работает...
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
31.10.2014, 11:27
Цитата Сообщение от Eugene-nsk Посмотреть сообщение
на нескольких одинаковых формах не работает
А вот это потому, что вы не определяете круг полей, которые нужно проверять, т.е. те поля, которые к данной форме относятся.
JavaScript
1
2
3
4
5
$('.template-order').bind('submit',function(event) {
    $('.template-order-phone', this).each(function() {
        /* ... */
    });
});
0
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186
31.10.2014, 11:29  [ТС]
Lazy_Den, а можно на коротком примере ,как это должно выглядеть?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
31.10.2014, 11:44
Цитата Сообщение от Eugene-nsk Посмотреть сообщение
можно на коротком примере
Можно. Только в примере, я вообще отключу отправку формы, а буду подсвечивать поля формы, которую пытаетесь отправлять. Так будет видно - какие поля затрагиваются при проверке, а какие нет. Смотрим
1
32 / 31 / 9
Регистрация: 27.07.2014
Сообщений: 186
31.10.2014, 16:01  [ТС]
Lazy_Den, че-то жестко я протупил. Получается все, что мы сделали - это добавили this в одно место
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2014, 16:01
Помогаю со студенческими работами здесь

Несколько одинаковых форм отправки данных, одинаковые кнопки
Всем здрасте. Есть одна проблемка, JS знаю не так хорошо, поэтому знаний для решения самому не хватает. Суть: На странице...

Обработка нескольких форм
почти на каждом лендинге использую по нескольку контактных форм. для каждой формы создаю по новому обработчику например ...

Обработка нескольких форм на странице
Добрый день! Возникла такая проблема. На странице 2 формы, отправляю данные с помощью ajax. Первая форма работает, все нормально. Когда...

Один файл js для обработки нескольких форм
Добрый день. Есть один файл js, в котором обрабатываются несколько страниц сайта. Есть две формы: как обработать два (и более)...

Валидация форм
Доброго времени суток. Заранее прошу прощения за назойливость, но у меня такая проблема: 1. В javascript я не разбираюсь 2. Нужно...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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