Html 输入类型URL-表示“URL”;请输入URL";如果不包括HTTP

Html 输入类型URL-表示“URL”;请输入URL";如果不包括HTTP,html,forms,url,input,Html,Forms,Url,Input,我一直在写一张表格,结果遇到了麻烦。我一直在使用input type=“url”,以便iPad和iPhone等都能使用正确的键盘,并尝试遵循新标准 不过我遇到了一个问题。在不需要网址的表单上-如果用户在www.theiradress.com中键入,大多数浏览器会用红色/黄色对其进行概述,以通知用户需要在其前面输入“http://” 我使用了input:invalid css来删除该大纲 但是,现在当用户提交表单时,浏览器会抛出一个错误:“请输入URL” 该字段不是必需的-我只是想让人们更容易输入

我一直在写一张表格,结果遇到了麻烦。我一直在使用input type=“url”,以便iPad和iPhone等都能使用正确的键盘,并尝试遵循新标准

不过我遇到了一个问题。在不需要网址的表单上-如果用户在www.theiradress.com中键入,大多数浏览器会用红色/黄色对其进行概述,以通知用户需要在其前面输入“http://”

我使用了input:invalid css来删除该大纲

但是,现在当用户提交表单时,浏览器会抛出一个错误:“请输入URL”

该字段不是必需的-我只是想让人们更容易输入他们的地址-但仍然在移动设备上显示正确的键盘等


有没有办法删除阻止用户提交表单的恼人工具提示?

据我所知,根据标准,协议是必需的()。您也可以使用regexp验证该字段,例如
/^(?(http | https | ftp):\/\/)?(?:[\w-]+\)+[a-z]{2,6}(\/)?/i

,根据引用页面的底部(),您可以使用文本输入类型和inputmode属性()在移动设备上使用键盘而不必对文本字段过于挑剔。

如果我理解正确,您希望当用户输入不带http:///的url时,自动在url前面添加http://以避免报告错误

试试这个:

//把这个放在头上
函数检查\u url(){
//获取输入值
var elem=document.getElementById(“url_输入”);
var输入值=元素值;
//将输入值设置为小写,使HTTP或HTTP变为HTTP
input_value=input_value.toLowerCase();
//检查字符串是否以http://或https开头://
var regExr=/^(http:| https:)\/\/.*$/m;
//测试表达式
var结果=regExr.test(输入值);
//如果http://或https://不存在,请在用户输入之前添加http://
如果(!结果){
var new_value=“http://”+输入_值;
元素值=新值;
}
}
尝试输入www.myurl.com
尝试输入http://www.myurl.com
尝试输入https://www.myurl.com

URL输入:



您可以向表单元素添加novalidate属性。外汇:

<form method="post" action="/foo" novalidate>...</form>
。。。

从这个答案中可以看出:

这是否回答了您的问题?