С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
4 / 4 / 0
Регистрация: 26.09.2012
Сообщений: 144

Валидация формы и отображение првильности заполнения формы

25.11.2016, 02:30. Показов 1041. Ответов 7

Студворк — интернет-сервис помощи студентам
Добрый день, я имею очень большую форму в несколько шагов и каждый заполненный input сопровождается состоянием неких точек.
Например:
HTML5
1
2
3
4
5
6
<label class="label fs15" name="last_name">Введите Вашу Фамилию</label>
<input class="form__input" name="last_name"  type="text" placeholder="Например, Иванов" value="">
<label class="label fs15">Введите Ваше Имя</label>
<input class="form__input" name="name"  type="text" placeholder="Например, Иван" value="">
<label class="label fs15">Введите Ваше Отчество</label>
<input type="text" class="form__input" name="middle_name"  placeholder="Например, Иванович" value="">
сопровождаются серыми кружками
HTML5
1
2
3
<i class="progress">
    <i class="point grey"></i><i class="point grey"></i><i class="point grey"></i>
</i>
Грубо говоря, если поле заполнено правильно, тогда кружку должен ставиться класс blue и убираться класс gray.
Подскажите пожалуйста, как можно сделать такое на JavaScript/jQuery? Как мне нужному элементу передать addClass('blue'), а не все их сразу закрасить

Добавлено через 1 час 38 минут
нашел https://jqueryvalidation.org/, всю проверку делаю с помощью этого плагина. Может в нем можно как то сделать, что при успешном заполнении input'a будет не только добавляться класс valid у input'a, но и класс blue у нужного мне элемента?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2016, 02:30
Ответы с готовыми решениями:

Валидация формы
Всем привет, Есть обычная html форма &lt;form method=&quot;post&quot; id=&quot;formRegistration&quot; enctype=&quot;multipart/form-data&quot;...

Валидация формы
Здравствуйте. У меня есть простая форма с двумя полями. Если поля не заполнены, то форма отправляться не должна. Сделал это вот так: ...

Валидация формы
Загрузить на сайт не удалось файлы, еще какой-то непреодолимой мистикой они некорректны. del Суть проблемы: нужно накинуть на...

7
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
25.11.2016, 10:06
Если вы просто хотите применить соответствующие стили кружочкам, опишите стили не для селектора .blue, а для селектора .valid. И всё.
0
4 / 4 / 0
Регистрация: 26.09.2012
Сообщений: 144
25.11.2016, 10:30  [ТС]
Цитата Сообщение от Balanaar Посмотреть сообщение
Если вы просто хотите применить соответствующие стили кружочкам, опишите стили не для селектора .blue, а для селектора .valid. И всё.
Проблема в том, что при успешном заполнение input'a класс valid вешается на input. Для него я сделал уже нужные стили. Если бы он так же вешался на мой тег <i></i>, то проблем бы не было.
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
25.11.2016, 16:36
как-то так в вашем случае
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form name="test" id="form1">
    <label class="label fs15" name="last_name">Введите Вашу Фамилию</label>
    <input class="form__input" name="last_name" data-id="0"  type="text" placeholder="Например, Иванов" value="">
    <label class="label fs15">Введите Ваше Имя</label>
    <input class="form__input" name="name" data-id="1"  type="text" placeholder="Например, Иван" value="">
    <label class="label fs15">Введите Ваше Отчество</label>
    <input type="text" class="form__input" name="middle_name" data-id="2" placeholder="Например, Иванович" value="">
    <i class="progress">
        <i class="point grey"></i><i class="point  grey"></i><i class="point grey"></i>
    </i>
    <input type="submit" name="sub" value="show">
</form>
JavaScript
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$(function(){
     var validator = $("#form1").validate({
                rules: {
                    last_name: {
                        required: true
                    },
                    name: {
                        required: true
                    },
                    middle_name: {
                        required: true
                    },
                },
        
          errorPlacement: function(error, element) {
                    var n = element.nextUntil('.progress');
                    var id_val = element.data('id');
 
                    var cl = n.last().next().find('.point').eq(id_val);
                    if($(cl).length == 0){
                        var point = element.next().find('.point').eq(id_val);
                        point.removeClass('blue');
                        point.addClass('grey');
                    }else{
                        cl.removeClass('blue');
                        cl.addClass('grey');
                    }
                },
                unhighlight: function (element, errorClass, validClass) {
                    var n = $(element).nextUntil('.progress');
                    var id_val = $(element).data('id');
 
                    var cl = n.last().next().find('.point').eq(id_val);
                    if($(cl).length == 0){
                        var point = $(element).next().find('.point').eq(id_val);
                        point.removeClass('grey');
                        point.addClass('blue');
                    }else{
                        cl.removeClass('grey');
                        cl.addClass('blue');
                    }
                }
            });
 
}
1
4 / 4 / 0
Регистрация: 26.09.2012
Сообщений: 144
27.11.2016, 01:39  [ТС]
Цитата Сообщение от fanatikus Посмотреть сообщение
как-то так в вашем случае
Может я что то делаю не так, но у меня ничего не работает, к тому же успешно заполненным полям перестало добавляться класс valid. Частично решил проблему вот таким костылем, но слишком много кода получается для формы, учитывая, что там полей больше 30...
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$("input[name=middle_name]").keyup(function() {
        if(validator.element( "input[name=middle_name]" )){
                $('.step_1 i.point:nth-child(3)').addClass('blue').removeClass('grey');
        }
        if(!validator.element( "input[name=middle_name]" )){
                $('.step_1 i.point:nth-child(3)').addClass('grey').removeClass('blue');
        }
});
 
$("input[name=mob_phone]").keyup(function() {
        if(validator.element( "input[name=mob_phone]" )){
                $('.step_1 i.point.grey:nth-child(4)').addClass('blue').removeClass('grey');
                done_step_1();
        }
        if(!validator.element( "input[name=mob_phone]" )){
                $('.step_1 i.point.blue:nth-child(4)').addClass('grey').removeClass('blue');
                done_step_1(); 
        }
});
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
27.11.2016, 13:18
Цитата Сообщение от richardok Посмотреть сообщение
но у меня ничего не работает
код, который я выложил, в таком виде как есть, рабочий. проверил.

Добавлено через 56 секунд
чтобы понять почему у вас не работает, нужна форма полностью
1
4 / 4 / 0
Регистрация: 26.09.2012
Сообщений: 144
27.11.2016, 18:10  [ТС]
Цитата Сообщение от fanatikus Посмотреть сообщение
чтобы понять почему у вас не работает, нужна форма полностью
demo8.star-media.by - нажмите в шапке на "заполнить анкету на визу"
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
27.11.2016, 18:18
конечно не будет работать. на сайте, совсем другая структура html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2016, 18:18
Помогаю со студенческими работами здесь

Валидация формы на Ls
Господа, подскажите, плз, есть ли в LotusScript какой-нибудь аналог @IsValid (в 5-ке)? Если нет, то что нужно передать функции...

Валидация формы
Всем добрый день, вопрос наверное избитый, но все же &lt;form action='login.php' method='POST'&gt; &lt;h2...

Валидация формы
Здравствуйте! Имеется скрипт при заполнении формы с полями ( имя, телефон, адрес). Если какое либо поле не заполнено или заполнено не...

Валидация формы
Добрый день! Надежда только на вас Сейчас будет запутанно, но постарайтесь понять Сделала форму отправки данных в бд со стороны...

Валидация формы
доброго времени суток! подскажите, почему во время валидации при фокусе поля само поле меняет размер? второй вопрос: если я хочу...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru