1

私のウェブサイトは、ユーザーに URL の入力を求めるような設定をしています。ユーザーは のように入力することもありますhttp://google.com/が、私のアプリケーションはまたはでgoogle.comURL をサポートしています。私はこれを試しました: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 に追加されます。何をすべきか?

4

3 に答える 3

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();
}
于 2012-07-03T09:18:20.303 に答える
1

これを試して:

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

注意すべき点がいくつかあります。

  • 現在のチェックhttp(s)://では、文字列内のどこにでも配置できます。開始時にのみチェックする必要があります

  • コードの可読性のために、ゼロ以下でindexOf()返される唯一の値は -1 であるため、それを明示的に確認することをお勧めします。< 0

  • b理由もなくグローバル変数 ( ) を作成しています

  • エスケープしないでください - xdevel が彼のコメントで述べたように、これは、文字列自体ではなく、文字列のエンコードされたバージョンをチェックすることを意味します

于 2012-07-03T09:22:24.867 に答える
0

これは、正規表現を使用して簡単に行うことができます。正規表現について学ぶ価値があります。

if ( a.match("^https?://") ) {
    alert("a is a url");
}
于 2012-07-03T09:23:43.153 に答える