Я знаю, что это старый пост, но в chrome вы можете установить cinter-указатель-события для всех, и он должен учитывать события. Я не проверял в других браузерах.
button[disabled] {
pointer-events: all;
}
Edit:
На самом деле, думаю, достаточно установить свойство auto. Как заметил @KyleMit, поддержка очень хорошая.
Я просто использовал это в проекте, где мне нужно было отключить кнопку до тех пор, пока не будут соблюдены некоторые правила валидации, но я также должен был активировать проверку при наведении на кнопку. Таким образом, добавление указателей-событий сделало трюк. Я думаю, что это самый простой способ преодолеть проблему, изложенную в OP.