Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
如何检查用户输入的文本是否包含Javascript中的http://_Javascript_Url - Fatal编程技术网

如何检查用户输入的文本是否包含Javascript中的http://

如何检查用户输入的文本是否包含Javascript中的http://,javascript,url,Javascript,Url,我有一个类似的设置,我的网站要求用户输入一个URL。有时用户输入类似http://google.com/和其他时间google.com,但我的应用程序支持带有http://或https://的URL,我尝试了以下方法: var a = document.getElementById('tinput').value; if (a.indexOf(escape('http://')) < 0 && a.indexOf(escape('https://')) < 0){ b

我有一个类似的设置,我的网站要求用户输入一个URL。有时用户输入类似
http://google.com/
和其他时间
google.com
,但我的应用程序支持带有
http://
https://
的URL,
我尝试了以下方法:

var a = document.getElementById('tinput').value;
if (a.indexOf(escape('http://')) < 0 && a.indexOf(escape('https://')) < 0){
b = 'http://' + a;
document.getElementById('tinput').value = b;
}
document.getElementById("urlfrm").submit();
var a=document.getElementById('tinput').value;
if(a.indexOf(escape('http://'))<0和&a.indexOf(escape('https://'))<0){
b='http://'+a;
document.getElementById('tinput')。value=b;
}
document.getElementById(“urlfrm”).submit();
但是这个力不起作用。它总是将
http://
添加到所有URL,即使它们包含相同的URL。怎么办?

试试看

var a = document.getElementById('tinput').value;
if (a.indexOf('http://') == -1 && a.indexOf('https://') == -1){
b = 'http://' + a;
document.getElementById('tinput').value = b;
document.getElementById("urlfrm").submit();
} else {
document.getElementById("urlfrm").submit();
}
试试这个:

var field = document.getElementById('tinput');
if (!/^https?:\/\//.test(field.value)) field.value = 'http://'+field.value;
需要注意的几点:

  • 您当前的检查允许
    http(s)://
    位于字符串中的任何位置-您应该只在开始时检查它

  • 出于代码可读性的考虑,并且由于
    indexOf()
    可以返回的唯一零下值是-1,因此最好明确检查该值,而不是
    <0

  • 您无缘无故地创建了一个全局变量(
    b

  • 不要逃避——正如xdevel在他的评论中所说,这将意味着您要检查字符串的编码版本,而不是字符串本身


只需使用正则表达式即可实现这一点,非常值得学习

if ( a.match("^https?://") ) {
    alert("a is a url");
}
是否尝试删除escape()?因为它将您的https://转换为https%3A//