2012-07-03 127 views
1

我有一個設置,我的網站要求用戶輸入一個URL。有時用戶輸入像http://google.com/等次google.com,但我的應用程序支持與http://https://
我想這個網址:如何檢查用戶輸入的文本是否包含http://使用Javascript

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://添加到所有網址,即使它們包含相同的網址。該怎麼辦?

+1

你試過刪除escape()嗎?因爲它會將您的https://轉換爲https%3A // – xdevel

回答

1

試試這個:

var field = document.getElementById('tinput'); 
if (!/^https?:\/\//.test(field.value)) field.value = 'http://'+field.value; 

有幾點要注意的事項:

  • 當前的檢查允許http(s)://爲字符串中的任何地方 - 你應該只在開始時檢查它

  • 代碼可讀性的利益,因爲在零的唯一值indexOf()可以返回-1,最好是明確檢查,與其< 0

  • 你要創建一個全局變量(b )沒有理由

  • 不要逃避 - 因爲xdevel在他的評論中說,這將意味着你檢查字符串的編碼版本,而不是字符串本身

+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(); 
} 
+0

嘿,太棒了! –

0

你可以只需用正則表達式來做這件事,非常值得了解它們。

if (a.match("^https?://")) { 
    alert("a is a url"); 
} 
相關問題