Лучшее решение - использовать текстовый ввод и добавить атрибут inputmode = "url", чтобы обеспечить возможности клавиатуры URL. Спецификация HTML5 была задумана для этой цели. Если вы сохраните type = "url", вы получите проверку синтаксиса, которая бесполезна в каждом случае (лучше проверить, возвращает ли она ошибку 404, а не синтаксис, который является вполне допустимым и не очень помогает).
У вас также есть возможность переопределить шаблон по умолчанию с атрибутом pattern = "https?: //.+", например, чтобы сделать его более разрешающим.
Помещение атрибута novalidate в форму не является правильным ответом на заданный вопрос, потому что оно удаляет проверку для всех полей в форме, и вы можете захотеть сохранить проверку для полей электронной почты, например.
Использование jQuery для отключения проверки также является плохим решением, поскольку оно должно работать без JavaScript.
В моем случае я помещаю элемент select с 2 вариантами (http: // или https://) перед вводом URL, потому что мне нужны только веб-сайты (а не ftp: // или другие вещи). Таким образом, я избегаю ввода этот странный префикс (самое большое сожаление по поводу Тима Бернерса-Ли и, возможно, основного источника синтаксических ошибок URL), и я использую простой текстовый ввод с inputmode = "url" с заполнителями (без HTTP). Я использую jQuery и сценарий на стороне сервера для проверить реальное существование веб-сайта (№ 404) и удалить префикс HTTP, если он вставлен (я избегаю использовать шаблон, такой как pattern = "^ ((? http).) * $", чтобы предотвратить установку префикса, потому что я думаю, лучше быть более терпимым)