如何检查用户输入的文本是否包含Javascript中的http://
我有一个类似的设置,我的网站要求用户输入一个URL。有时用户输入类似如何检查用户输入的文本是否包含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
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)://
- 出于代码可读性的考虑,并且由于
可以返回的唯一零下值是-1,因此最好明确检查该值,而不是indexOf()
<0
- 您无缘无故地创建了一个全局变量(
)b
- 不要逃避——正如xdevel在他的评论中所说,这将意味着您要检查字符串的编码版本,而不是字符串本身
if ( a.match("^https?://") ) {
alert("a is a url");
}
是否尝试删除escape()?因为它将您的https://转换为https%3A//