Los elementos deshabilitados "comen" clics en algunos navegadores: no responden a ellos ni permiten que sean capturados por los controladores de eventos en cualquier parte del elemento o cualquiera de sus contenedores.
En mi humilde opinión, la forma más simple y limpia de "arreglar" esto (si realmente necesita capturar clics en elementos deshabilitados como lo hace el OP) es simplemente agregar el siguiente CSS a su página:
input[disabled] {pointer-events:none}
Esto hará que cualquier clic en una entrada deshabilitada caiga al elemento principal, donde puede capturarlos normalmente. (Si tiene varias entradas deshabilitadas, es posible que desee colocar cada una en un contenedor individual, si aún no se han presentado de esa manera, un extra <span>
o un <div>
, por ejemplo, solo para que sea fácil distinguir qué entrada deshabilitada fue hecho clic).
La desventaja es que este truco desafortunadamente no funcionará para los navegadores más antiguos que no admiten la pointer-events
propiedad CSS. (Debería funcionar desde IE 11, FF v3.6, Chrome v4): caniuse.com/#search=pointer-events
Si necesita admitir navegadores antiguos, deberá usar una de las otras respuestas.