Отключенные элементы «едят» щелчки в некоторых браузерах - они не отвечают на них и не позволяют захватывать их обработчиками событий в любом месте элемента или любого из его контейнеров.
ИМХО самый простой и чистый способ «исправить» это (если вам действительно нужно захватывать клики на отключенных элементах, как это делает OP), это просто добавить следующий CSS на вашу страницу:
input[disabled] {pointer-events:none}
Это приведет к тому, что любые щелчки на отключенном входе будут попадать на родительский элемент, где вы сможете их нормально захватывать. (Если у вас есть несколько отключенных входов, вы, возможно, захотите поместить каждый в отдельный контейнер самостоятельно, если они еще не выложены таким образом - например, дополнительные <span>
или <div>
, просто чтобы сделать это легко отличить, какой из отключенных входов был нажат).
Недостатком является то, что этот трюк, к сожалению, не работает для старых браузеров, которые не поддерживают свойство pointer-events
CSS. (Должно работать в IE 11, FF v3.6, Chrome v4): caniuse.com / # search = pointer-events
Если вам нужна поддержка старых браузеров, вам нужно использовать один из других ответов!