0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 17

Некорректное поведение submit двух форм

25.04.2018, 17:17. Показов 762. Ответов 2

Студворк — интернет-сервис помощи студентам
Всем привет, есть html страничка с двумя формами.
HTML5
1
2
3
4
5
6
7
8
9
10
           <form method="post">
                    <input type="hidden" name="command" value="GET_ORDER">
                    <input type="submit" value="Открыть">
           </form>
           <form name="Survey" method="post">
                    <input type="text" required>
                    <input type="hidden" name="command" value="">
                    <input type="button" id="sendorder" value="Заказ">
                    <input type="submit" id="sendForm" style="display: none">
           </form>
По логике моего веб-приложения при нажатии кнопки "sendorder" формы "Survey" срабатывает скрипт, при котором устанавливается значение в поле command и форма отправляется.
Вот скрипт бинда:
JavaScript
1
2
3
4
    $('#sendorder').on('click', function () {
            $('[name=command]').val('ADD_ORDER');
            $('#sendForm').click();
    });
Если не заполнить required поле в форме "Survey", вылезет ошибка валидации, всё вроде бы отлично, однако если после этого нажать submit первой формы, то отправляется вторая незаполненная форма, как будто бы submit событие формы "Survey" после неудачной валидации осталось в ожидании и срабатывает после submit'a первой формы.
Проблему получилось решить таким скриптом:
JavaScript
1
2
3
4
5
6
7
8
    $('#sendorder').on('click', function () {
        if ($('[name=Survey]')[0].checkValidity()) {
            $('[name=command]').val('ADD_ORDER');
            $('[name=Survey]').submit();
        } else {
            $('#sendForm').click();
        }
    });
Но я до сих пор не понимаю почему так происходит, на другой html-странице есть почти такие же 2 формы, но там отрабатывает всё отлично, но там нет никаких биндов, хотя даже и в этом примере бинд стоит не на submit кнопке а на обычной, которая уже вызывает клик submit кнопки.
Помогите, пожалуйста, разобраться!

Прикреплю на всякий случай формы с работающей страницы (там нет никаких биндов).
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                <form method="post" align="left">
                    <input type="hidden" name="command" value="USER_AUTHORIZATION">
                    <input type="text" name="loginAuth" placeholder="логин" required></br>
                    <input type="password" name="passwordAuth" placeholder="пароль" required>
                    <input type="submit" value="Войти">
                </form>
                <form method="post" align="left">
                    <input type="hidden" name="command" value="USER_REGISTRATION">
                    <input type="email" name="emailReg" placeholder="эл.адрес" required></br>
                    <input type="text" name="loginReg" placeholder="логин"
                           pattern="[A-Za-z][A-Za-z0-9_]{2,19}$" required></br>
                    <input type="password" name="passwordReg" placeholder="пароль"
                           pattern="^[A-Za-z0-9]{3,20}$" title="Пример: Qwerty123" required>
                    <input type="submit" value="Регистрация">
                </form>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.04.2018, 17:17
Ответы с готовыми решениями:

Не срабатывает submit для двух вложенных форм
Доброго времени суток. Есть такая структура &lt;form id=&quot;1&quot;&gt; ... ... &lt;form id=&quot;2&quot;&gt; ... ... ...

Вызов submit у двух форм одной кнопкой
Доброго дня, вопрос следующий есть две формы &lt;form class=&quot;form-horizontal ms2_form&quot; method=&quot;post&quot;...

Submit на несколько форм одновременно
Решил поприкалываться, хочу подумать над тем, чтобы отсылать с одной страницы СМСки для нескольких пользователей... Ну и естественно, раз...

2
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
26.04.2018, 08:44
Цитата Сообщение от Saiveen Посмотреть сообщение
то отправляется вторая незаполненная форма
Вы это определяете по значению command?
Цитата Сообщение от Saiveen Посмотреть сообщение
JavaScript
1
$('[name=command]').val('ADD_ORDER');
Этой строкой вы задаёте значение всех полей с атрибутом name="command", то есть в первой форме значение command тоже становится ADD_ORDER
1
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 17
26.04.2018, 13:02  [ТС]
Как же я это не усмотрел, пустая я голова
Теперь всё стало на свои места, спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2018, 13:02
Помогаю со студенческими работами здесь

несколько форм на странице с одним submit?
Парни, подскажите, плиз. Есть несколько форм на странице с одним submit для всех, к примеру куча форм с классом dadada. Так когда я...

Form Submit для многих форм
Отправка даных с формы происходит через код Jquery $(&quot;form&quot;).submit(); Когда на страничке одна форма,все происходит нормально ...

Некорректное поведение скрипта
Здравствуйте. Есть скрипт( его часть - логирование) $Log = 'Ошибка '.$ex-&gt;getMessage().' в строке № '.$ex-&gt;getLine().'...

Некорректное поведение клавиатуры
Поставил Mint 17.3, первые пару дней всё работало нормально, затем с клавиатурой произошла ерунда; 1.ScrollLock постоянно включен; ...

Некорректное поведение GetClientRect
Есть MDI приложение. Запущено на машине с 2мя мониторами. На втором - маленькое разрешение(1024x768). Когда открывается окошко, там...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском https:/ / vkvideo. ru/ video-231374465_456239020 На английском https:/ / www. youtube. com/ watch?v=oskqtCrWns0 Исходники примера:
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач: . . .
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
Вот в чем сила LM.
Hrethgir 02.07.2025
как на английском будет “обслуживание“ Слово «обслуживание» на английском языке может переводиться несколькими способами в зависимости от контекста: * **Service** — самый распространённый. . .
Использование Keycloak со Spring Boot и интеграция Identity Provider
Javaican 01.07.2025
Два года назад я получил задачу, которая сначала показалась тривиальной: интегрировать корпоративную аутентификацию в микросервисную архитектуру. На тот момент у нас было семь Spring Boot приложений,. . .
Содержание темы с примерами на WebGL
8Observer8 01.07.2025
Все примеры из книги Мацуды и Ли в песочнице JSFiddle Пример выводит точку красного цвета размером 10 пикселей на WebGL 1. 0 и 2. 0 WebGL 1. 0. Передача координаты точки из главной программы в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru