Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2014, 21:21
Новичок на форуме
Отправить личное сообщение для leksus Посмотреть профиль Найти все сообщения от leksus
 
Регистрация: 29.08.2014
Сообщений: 2

Конфликт onchange и onsubmit
Приветствую!

Есть форма, где при вводе некоторых данных происходит событие onchange, после чего форма через XMLHttpRequest отправляется на сервер, там данные проверяются и сохраняются в сессии (чтобы в случае случайного закрытия или обновления странички введенные данные не потерлись в форме). Также есть кнопка submit, при нажатии на которую происходит событие onclick и опять через XMLHttpRequest на сервере происходит окончательная проверка данных, они записываются в БД и происходит их дальнейшая обработка.

Проблема в том, что если заполнить форму и затем жмакнуть на submit без снятия фокуса на последнем заполненном (отредактированном) поле, то произойдет событие onchange, а не onclick. В случае, если поле отредактировать, затем фокус с поля сбросить (кликнув в любом другом месте), то onclick отрабатывает так, как мне надо. Собственно, поведение понятно, но я не знаю, как сделать, чтобы после onchange сразу срабатывал onclick. Есть подозрение, что я хочу чего-то неправильного

JS знаю на уровне копи-паста кода, событий и простейших конструкций.

UPD: тему неправильно написал, не onsubmit, a onclick.
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2014, 13:38
Новичок на форуме
Отправить личное сообщение для leksus Посмотреть профиль Найти все сообщения от leksus
 
Регистрация: 29.08.2014
Сообщений: 2

Эмм, какой алерт? У меня он не используется.

Порылся на вашем форуме, нашел ответ:
Как отменить событие onchange при отправке формы?

Вкратце - заменить на кнопке onclick на onmousedown. Всем спасибо, все свободны
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2014, 12:05
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Цитата:
поле, то произойдет событие onchange, а не onclick.
Сначала произойдет change, затем произойдет click. Если посмотреть фазы то увидите сперва 2, потом 3.

Так что проверяйте свои коды, куда там утикает click, без которого никакого change быть не может.


ЗЫ

Цитата:
onmousedown - выполняется первее, чем onchange.
Это понятно, но click заканчивается после change. Следовательно у вас сперва пойдут данные с поля на сервер, типа проверятся, затем пойдет уже вся форма, поскольку когда юзер нажал на копку, с поля ушел фокус, ончендж сгорел, а затем догорел щелчок.

Последний раз редактировалось kostyanet, 02.09.2014 в 12:10.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитация события onchange Globus Элементы интерфейса 8 28.07.2014 11:24
Как отменить событие onchange при отправке формы? Petja Элементы интерфейса 1 10.04.2014 18:10
Конфликт двух скриптов veatone jQuery 2 24.05.2013 21:02
onChange на несколько элементов и одновременное их изменение kayuga Dojo toolkit 0 13.03.2013 22:47
Помогите новичку - onChange() не срабатывает serp Общие вопросы Javascript 2 01.08.2008 14:47