Почему js срабатывает на странице только с одной (верхней) формой обратной связи?

xoxol4uk22
На сайте с 14.11.2017
Offline
66
481

Подскажите, пожалуйста.

Есть очень рростая форма обратной связи php + js. Первый из них получает данные пользователя, отправляет на почту и выдает результата "ОК". Второй реагирует на результат 'OK' и позволяет не перезагружать страницу, а прямо в окошке выводит сообщение об успешной отправке.

Но, если поставить 2 такие формы на страницу, то js работает только в первой, которая выше. Почему так происходит? Теоретически я могу продублировать файлы php и js для второй формы, но может можно как-то проще?

LEOnidUKG
На сайте с 25.11.2006
Offline
1606
#1

Потому, что код привязан на id скорее всего. А ID должен быть уникальный. Поэтому переводите обработку на class

✅ Трастовых площадок под размещение статей и ссылок. Опыт 14 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
xoxol4uk22
На сайте с 14.11.2017
Offline
66
#2
LEOnidUKG:
Потому, что код привязан на id скорее всего. А ID должен быть уникальный. Поэтому переводите обработку на class

Да, спасибо большое. Действительно оно)

Но тогда такой вопрос... Я подправляю скрипт под 2 id:

$("#contact" && "#contact-2").submit(function() {...

Суть скрипта скрыть поля обернутые в <div id="fields"> и вывести на месте поля <div id="note"></div> текст об успешном заказе.

Но после объединения функции заказ происходит, но поля меняются только на верхней форме. А как можно сделать, чтобы менялись на обеих? Ну чисто в общих чертах...

LEOnidUKG
На сайте с 25.11.2006
Offline
1606
#3
Ну чисто в общих чертах...

Если формы будет только две, не ломайте комедию, и сделайте две функции с разными ID

Иначе там нужно использовать классы + обращаться к ним, через this. чтобы показать коду, что вы будете работать с классами, которые находятся именно в этом окружении.

xoxol4uk22
На сайте с 14.11.2017
Offline
66
#4
LEOnidUKG:
Если формы будет только две, не ломайте комедию, и сделайте две функции с разными ID

Иначе там нужно использовать классы + обращаться к ним, через this. чтобы показать коду, что вы будете работать с классами, которые находятся именно в этом окружении.

Спасибо за помощь! Все таки удалось мне объединить функции. Я сделал 2 id и прописал "#id" && "#id-2", а затем скрываемые и отображаемые скриптом поля также сделал по типу:

$("#fields" && '#fields-2').hide();

Но чисто из любопытства возникает вопрос:

Почему функции удалось объединить именно через "И" (&&), а не через ИЛИ (||). Ведь запускается только одна за раз, а не обе? Но если сделать через ИЛИ, тогда не работает(((

ПОСПЕШИЛ С ВЫВОДАМИ)) ТЕПЕРЬ ПЕРВАЯ ФОРМА НЕ ПАШЕТ. ВОПРОС НЕ АКТУАЛЕН.

---------- Добавлено 18.09.2019 в 14:37 ----------

LEOnidUKG:
Если формы будет только две, не ломайте комедию, и сделайте две функции с разными ID

Иначе там нужно использовать классы + обращаться к ним, через this. чтобы показать коду, что вы будете работать с классами, которые находятся именно в этом окружении.

Так и сделал)

S
На сайте с 30.09.2016
Offline
469
#5
xoxol4uk22:
$("#contact" && "#contact-2")

Бррр... Это же селекторы

$("#contact,#contact-2")
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
xoxol4uk22
На сайте с 14.11.2017
Offline
66
#6
Sitealert:
Бррр... Это же селекторы
$("#contact,#contact-2")

Спасибо, в таком виде это решило все мои проблемы. До применения селекторов в js еще не дошел... Пытаюсь учить

IL
На сайте с 20.04.2007
Offline
418
#7
xoxol4uk22:
До применения селекторов в js еще не дошел...

Это не совсем js, это jQuery =)

На чистом JS это выглядит чуть более громоздко )))

Удачи в изучении

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий