我有一个设置,我的网站要求用户输入网址。有时用户输入http://google.com/
和其他时间google.com
,但我的应用支持使用http://
或https://
的网址,我试过这个:
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。怎么办?
答案 0 :(得分:2)
尝试
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();
}
答案 1 :(得分:1)
试试这个:
var field = document.getElementById('tinput');
if (!/^https?:\/\//.test(field.value)) field.value = 'http://'+field.value;
需要注意的几点:
您当前的检查允许http(s)://
位于字符串中的任何位置 - 您应该只在开始时检查
为了代码可读性,并且因为indexOf()
可以返回的唯一值为零,所以最好明确检查,而不是< 0
您无缘无故地创建了一个全局变量(b
)
不要逃避 - 正如xdevel在评论中所说,这意味着你要检查字符串的编码版本,而不是字符串本身
答案 2 :(得分:0)
您只需使用正则表达式即可完成此操作,非常值得了解它们。
if ( a.match("^https?://") ) {
alert("a is a url");
}