IE не признает, что select изменился, пока вы не переместите фокус в сторону от поля.
Это связано с тем, как IE использует элемент управления selectbox Windows; он эффективно работает как плагин в этом отношении. Вы также можете заметить причуды с блоками выбора в IE, когда дело доходит до слоев; у выборочных ящиков есть привычка всегда показывать сверху, даже когда у вас есть другие элементы, покрывающие их. Это также вызвано тем же.
Быстрое решение заключается в том, чтобы уловить событие click
, а не событие change
. Затем это произойдет, когда пользователь внесет изменения, не дожидаясь их изменения фокуса вдали от поля.
Однако даже тогда у вас будут проблемы, потому что событие click
не подбирает изменения, сделанные с помощью клавиатуры, поэтому вы можете перейти в поле с помощью клавиши табуляции и изменить его, а событие click
никогда не будет уволена.
По этой причине вам может потребоваться поймать как события click
, так и change
. Конечно, тогда вы в конечном итоге сталкиваетесь с проблемой, возможно, поймать одно и то же изменение более одного раза. Это не идеально, и вам нужно будет его кодировать, но это единственный способ поймать все возможные способы изменения пользователем поля.
Его все еще не идеально, потому что если пользователь использует клавиатуру для навигации и изменения поля, они могут перемещаться вверх и вниз по списку выбора до содержимого своего сердца, но вы не получите никакого события, вызванного до перехода от поля. Это неизбежно.
'$ ('. InitDealers option: selected'). Val()' может быть записано как 'this.value' – rahul
Мне любопытно, какую версию jQuery вы используете? Я бы подумал, что они это исправили. –