Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите с событиями (https://javascript.ru/forum/dom-window/31304-pomogite-s-sobytiyami.html)

Forgotten 02.09.2012 20:00

Помогите с событиями
 
Итак, вот что мы имеем. Есть две радио-кнопки, например пусть это будет

Один
Два

Напротив радиокнопки "Один" расположено текстовое поле, которое активируется при активации этой кнопки (item(0)) и деактивируется при ее деактивации (item(1)). За этими радиоэлементами закреплено событие onChange, которое вызывает соответствующую функцию обработки вышеупомянутого. Назовем эту функцию f_radio(); . Когда мы выбираем "Один", функция активирует текстовое поле и деактивирует с вычищением всего что там было написано.

И все бы хорошо, пока не появилась другая функция - функция обработки ошибочного ввода. Назовем текстовое поле "inputsaved" и оно существует само по себе. За этим полем закреплен еще один onChange, который вызывает эту другую функцию f_testGab(); . Функция проверяет текст на целые значения и обрабатывает ошибки при их нахождении.

Но. До того как я подключил эту вторую функцию с этим вторым onChange все работало. Но теперь - при срабатывании onChange на радио кнопках (с item(0) на item(1) ) запускается функция обработки onChange на текстовом поле. И подавляется событие onChange на радио кнопках. Но если событие текстового поля не срабатывает - срабатывают радио кнопки. В общем у меня образовалась коллизия (столкновение двух обработчиков).

Все что я хочу сделать - чтобы при включенном ОДИН включалась текстовое поле. При набирании текста запускалась функция обработки ошибок на это поле. Как только я нажимаю на ДВА - запускалась функция обработки событий на радиокнопках, что это текстовое поле подчищает и деактивирует, и функция обработки ошибок НЕ запускалась. Как это сделать? Надеюсь понятно объяснил. Пример могу накатать, если нужно.

Deff 02.09.2012 20:17

Цитата:

Сообщение от Forgotten
. Пример могу накатать, если нужно.

Да - Пожалуйста - Код заключайте в теги
[HTML run][/HTML]

devote 02.09.2012 20:34

Forgotten,
используйте другое событие для проверки правильности ввода данных, потому как в вашем случае onchange срабатывает у инпута при потере фокуса, поэтому оно всегда будет срабатывать до наступления события для радиобатонов. Попробуйте на текстовое поле вешать например события oninput, onkeypress, onkeydown, onkeyup и т.д. В этих случая при потере фокуса не будет срабатывать событие при клике на радиобатон

Slavenin 03.09.2012 13:29

на инпут onkeyup на батоны focus и blur


Часовой пояс GMT +3, время: 21:59.