Но он по-прежнему позволяет пользователям вводить только пробелы.
Есть ли для этого только HTML-решение?
Ответ 1
Используйте атрибут pattern в сочетании с атрибутом required. И обязательно включите также атрибут title, так как большинство браузеров вставляют текст заголовка в всплывающее окно проверки.
<input required pattern=".*\S+.*" title="This field is required">
Для шаблона .*\S+.* требуется как минимум один непробельный символ, но также допускаются пробельные символы (пробелы, табуляции, возврат каретки и т.д.) в начале или конце. Если вы не хотите, чтобы пользователь мог ставить пробелы в начале/конце, используйте вместо этого:
<input required pattern="\S+" title="This field is required">