Этот вопрос имеет много старых ответов и, по-видимому, является общепринятым решением. Я считаю, что лучший подход в современных браузерах заключается в использовании inputmode="none"
в теге ввода HTML:
<input type="text" ... inputmode="none" />
или, если вы предпочитаете делать это в сценарии:
$(selector).attr('inputmode', 'none');
Я не тестировал его всесторонне, но он хорошо работает на настройках Android, с которыми я его использовал.