| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > checkbox: непонятная реакция на двойной щелчок |
| Автор: CaptainFlint 3.10.2006, 12:36 | ||
Вот пример странички:
Требуется, чтобы надпись "Is checked?" всегда корректно отображала состояние флажка. Это работает, но только пока пользователь не сделает двойной щелчок по чекбоксу. При этом галочка меняет состояние дважды (скажем, ставится и снова убирается), но функция set_state вызывается только один раз, в результате при выключенном флажке пишется "Is checked? Yes". Что пробовал: 1. Добавить onDblClick. Он честно вызывается, но в момент его вызова состояние галочки ещё не изменилось. Т.е. если галочка была снята, и пользователь выполняет двойной щелчок, то при обработке в onDblClick переменная checked получает значение 1, хотя после выполнения двойного щелчка галочка окажется выключенной. 2. Заменить onChange на onClick. Разницы нет. 3. Использовать все три вышеупомянутые функции в различных сочетаниях. С тем же результатом, то бишь, без оного. |
| Автор: Bikutoru 3.10.2006, 12:48 |
| Если я не ошибаюсь, в IE и Опере onChange срабатывает только при потере элементом фокуса. |
| Автор: CaptainFlint 3.10.2006, 12:53 |
| Пардон, забыл указать, что это всё проверял только в Опере 9.02. Проверил в IE - onChange, и правда, не срабатывает. Заменил onChange на onClick, в IE 6 и Firefox 1.5 работает нормально, в Опере, как и было сказано в первом посте, без разницы. |
| Автор: SamDark 3.10.2006, 12:54 |
| CaptainFlint Используй для этого onMouseUp. |
| Автор: CaptainFlint 3.10.2006, 13:02 |
| SamDark, тогда перестаёт работать в IE. Добавлено @ 13:03 Да и как-то наперекосяк работает: после постановки галочки сообщает, что она не установлена, а после снятия - что установлена. Поменять местами Yes и No, конечно, не проблема, но это как минимум странно... |
| Автор: 12345c 3.10.2006, 13:48 | ||||
Очевидно, это благоприобретённый глюк 9-й версии (не знаю, как в 8-й, но в 7.54 -опере работает) :
В 9-й с DblClick что-то связано. Подобные временнЫе глюки лечатся разумным выбором задержек:
|
| Автор: SamDark 3.10.2006, 13:50 |
| CaptainFlint Ещё посмотрел. Хоть и криво, но можно при помощи того же js определить браузер и выдать чекбокс с onclick для IE и onMouseUp для opera. Добавлено @ 13:54 CaptainFlint, Дело и правда в задержке. То-то мне показалось, что в Опере галочки быстрее ставятся 12345c, |
| Автор: CaptainFlint 3.10.2006, 13:55 |
| 12345c Спасибо, я уже именно так и реализовал. |