Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在';类型=url';_Html_Css - Fatal编程技术网

Html 在';类型=url';

Html 在';类型=url';,html,css,Html,Css,我在表单中使用type=url,只允许传递url 但是,使用标准验证消息如下 有没有办法改变这一点?以下是我试图实现的设计(概述搜索栏,在下面添加消息,并使搜索框中的文本变成橙色) 这是我表格后面的函数 function searchIt() { let form = document.querySelector('form') console.log(form) form.addEventListener('subm

我在表单中使用
type=url
,只允许传递url

但是,使用标准验证消息如下

有没有办法改变这一点?以下是我试图实现的设计(概述搜索栏,在下面添加消息,并使搜索框中的文本变成橙色)

这是我表格后面的函数

function searchIt() {

            let form = document.querySelector('form')
            console.log(form)

            form.addEventListener('submit', async(e) => {
             // onclick or the event that start the call
                interval = setInterval(() => {
                progress = progress >= 100 ? 100 : progress + 1
                document.getElementById('myprogress').style.width = `${progress}%`


            // end interval and wait at 100%
                if(progress == 100) clearInterval(interval);
                }, maxTime/100)
                document.getElementById('loadingcontainer').style.display = ""
                e.preventDefault()
                let urlIN = form.url.value
                let url = encodeURIComponent(urlIN)
                console.log(url)
                try {
                    const data = await fetch('/', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json'
                        },
                        body: JSON.stringify({
                            url: url
                        })


                    }).then(res => {
                        document.open()
                        res.text().then(function(text) {

                            document.write(text)
                            // Hide the progressbar, stop the timer and reset progress
                        clearInterval(interval);
                        progress = 0;
                        document.getElementById('myprogress').style.width = "0%"
                        document.getElementById('loadingcontainer').style.display = "none";
    
                        });

                    })


                } catch (err) {
                    console.error(err)
                }

            })


        }

是的,这是完全可能的。但是,您必须通过在表单上附加
onsubmit
函数来创建验证,如下所示:

var input=document.getElementsByTagName('input')[0];
[a-zA-Z0-5-a-zA-Z0-Z0-Z0-5-a-扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎9 9-9-9 9 9 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 2、})/gi;
var regex=新的RegExp(表达式);
var errorMsg=document.getElementById(“errorMessage”);
函数val(){
var值=输入值;
if(正则表达式测试(值)){
input.style.borderColor=“绿色”;
input.style.color=“绿色”;
返回true;
}否则{
input.style.borderColor=“红色”;
input.style.color=“红色”;
errorMsg.style.display=“block”;
返回false;
}
}
#错误消息{
颜色:红色;
显示:无;
}
.输入{
宽度:80%;
保证金:自动;
}
输入{
宽度:80%;
保证金:自动;
填料:2米;
边界半径:25px;
大纲:无;
边框:1px纯黑;
}

哎呀!这不是一个有效的URL


您可以使用HTML5代替“text”类型,而不是编写URL的所有必要验证,该类型内置了所有验证:

这将需要一个格式正确的URL,但是
ftp://
也是正确的。 可以使用 您的需求的属性“从http://,https://,包括www.”

在这里,在
上使用
novalidate
可以防止浏览器显示自己的消息,然后您可以使用
field.checkValidity()测试字段的有效性

const urlField=document.getElementById('onlyweb');
const messagebox=document.getElementById('errormessage');
document.getElementById('testform')
.addEventListener('submit',函数(e){
e、 预防默认值();
const valid=urlField.checkValidity();
log('valid=',valid);
如果(有效){
messagebox.innerHTML='';//清除可能存在的任何消息
messagebox.classList.add('hidden');
}
否则{
messagebox.innerHTML='您需要包含http://或https://并包含“www.”前缀';
messagebox.classList.remove('hidden');
}
});
输入:无效{
边框颜色:红色;
}
div{
边缘底部:1米;
}
#错误信息{
字体系列:无衬线;
颜色:红色;
边框:1px纯色灰色;
填充:1em;
}
#errormessage.hidden{
显示:无;
}

无效字段将具有红色边框
仅Web URL

您可以使用输入类型
url
,然后使用Mozilla中的
.checkValidity()
检查有效性。checkValidity方法:检查元素是否有任何约束以及是否满足这些约束。如果元素未通过其约束,浏览器将在元素上触发一个可取消的无效事件,然后返回false。

还需要注意的是,当提到URL验证时,它们在引用URL时具体指的是什么?可以在url地址栏中写入
www.stackoverflow.com
,它们最终会出现在stackoverflows网站上,但是,url验证需要在
url
地址中调用有效的协议httphttps,以便使用
url
类型进行验证。有关
url
的更多信息可在此处找到

const input=document.getElementById(“url”);
const errorMessage=document.getElementById(“errorMessage”);
const validate=document.getElementById(“validate”);
validate.addEventListener('单击',(e)=>{
e、 预防默认值();
if(input.checkValidity()!==true){
input.className='false';
input.classList.remove('true');
errorMessage.style.display='block';
}否则{
input.className='true';
input.classList.remove('false');
errorMessage.style.display='none';
}
})
#错误消息{
显示:无;
颜色:橙色;
}
.是的{
边框:1px纯绿色;
颜色:绿色;
}
.错{
边框:1px实心橙色;
颜色:橙色;
}
输入#url{
边界半径:.9rem;
填充:.7rem;
}


哎呀!这不是一个有效的URL。

type=“URL”
验证格式是否正确,因此您不需要自己完成所有的正则表达式工作,只需检查字段的有效性即可。Hmm。。谢谢你这么做!但是,该表格仍将提交。。
不应该返回false阻止它这样做?如果它满足正则表达式,那么我们允许它提交。我原以为这是为了@KyleUSAYes,但搜索不符合正则表达式的google.com,仍然允许它提交不属于规则的内容regex@KyleUSA我在片段中测试了它。它不允许它提交。嗨,KyleUSA,你删除了你以前的问题,我不得不把我正在写的答案改编成这个新问题。希望我的回答能有所帮助。再次你好。。。问题,我正在尝试你的,表格仍在提交。有什么建议吗?我正在使用中的POST actionform@KyleUSA-
e.preventDefault().addEventListener('submit',…
中的code>应该可以防止这种情况发生-如果您进行了相同的设置。另一种常见的方法是将“click”处理程序挂接到submit按钮,在这种情况下