IE не распознает, что поле выбора изменилось, пока вы не переместите фокус с поля.
Это связано с тем, что IE использует элемент управления Windows selectbox; в этом отношении он эффективно работает как плагин. Вы также можете заметить причуды с полями выбора в IE, когда дело доходит до наслоения; Коробки выбора имеют привычку всегда показывать сверху, даже если у вас есть другие элементы, покрывающие их. Это также вызвано тем же.
Быстрое решение - перехватить событие click
, а не событие change
. Затем он срабатывает, когда пользователь вносит изменения, не дожидаясь, пока он изменит фокус вдали от поля.
Однако даже тогда у вас будут проблемы, потому что событие click
не фиксирует изменения, сделанные с помощью клавиатуры, поэтому вы можете перейти к полю с помощью клавиши табуляции и изменить его, а также событие click
никогда не будет уволен.
По этой причине вам может потребоваться перехватить события click
и change
. Конечно, тогда вы столкнетесь с проблемой возможного получения одного и того же изменения более одного раза. Это не идеально, и вам нужно будет написать для него код, но это единственный способ поймать все возможные способы изменения поля пользователем.
Это все еще не идеально, потому что, если пользователь использует клавиатуру для навигации и изменения поля, он может перемещаться вверх и вниз по списку выбора до уровня своего сердца, но вы не получите никакого события, вызванного, пока не отойдете с поля. Это неизбежно.