Вы должны использовать input event
вместо change event
. Потому что change event
может работать не во всех браузерах.
Событие Change
возникает в большинстве браузеров, когда содержимое изменяется, и элемент теряет фокус, в основном совокупность изменений. Вы не увидите этого срабатывания для каждого изменения в отличие от события ввода.
Событие Input
запускается синхронно при изменении содержимого элемента. Таким образом, вы увидите, что это событие происходит чаще. Поддержка браузеров может быть разной.
Итак, событие input
очень полезно для отслеживания изменений <select>
полей. Однако это не поддерживается в IE version < 9
. Но в более старых версиях IE есть собственное событие onpropertychange
, аналогичное oninput
. Таким образом, вы можете использовать его таким образом, чтобы иметь полную поддержку кросс-браузера .:
$( selector ).on( 'input propertychange' );
Итак, ваш код JavaScript должен быть таким:
$( function() {
$( '#storeselector' ).on( 'input propertychange', function() {
$( '.store-hide' ).hide();
$('#storeselector option:selected' ).each( function() {
$( '#' + $(this).val() ).show();
} )
} );
} );