2017-05-17 12 views
0

私はスクリプトtest.phpを持っています。次のHTML & jQueryを使用しています。jQueryを使用してクエリ文字列に基づいたオートコンプリートフィールド

基本的にユーザーがこのスクリプトを読み込んだ場合、入力フィールドにランダムな文字列を入力したいと考えています。

の場合、ユーザーがtest.php?id=タイプのURLを訪問した場合、このフィールドにデータを入力しません。

私は既存のコードでこれをどのように行うことができますか?私は以下のコードを実行すると、現在、それは私に、このエラーが発生します


:クエリ文字列が存在する場合

Uncaught ReferenceError: key is not defined at test.php:28

<input id="input_1_8" name="input_1_8" value=""> 

<script 
    src="https://code.jquery.com/jquery-3.2.1.js" 
    integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" 
    crossorigin="anonymous"></script> 

<script type="text/javascript"> 

function makeid() 
{ 
    var text = ""; 
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 

    for(var i=0; i < 5; i++) 
     text += possible.charAt(Math.floor(Math.random() * possible.length)); 

    return text; 
} 


var urlParams = new URLSearchParams(window.location.search); 
var keys = urlParams.keys(); 
for (key of keys) {} 
setTimeout(function() { 
    if (null === key) { // here is where I get my error!! 
    } else { 
     $('#input_1_8').val(makeid()); 
    } 
}, 3000); 
</script> 

答えて

1

あなたがやりたいことには、以下の簡単なjsのコードを使用しますか、ない。

if(document.location.search.length) { 
    //query string exists - do something 
} 
else 
{ 
    //query string does not exist - do something 
} 

これが役立ちます。

+0

Woop-worked !!多くのありがとう、ナシール! :-) – michaelmcgurk

+0

ありがとうございます。答えも正しいとマークしてください。ハッピーコーディング。 :) –

+0

ウィル - あなたはとても速かった私は緑のチックの前に2分以上待たなければならない;-) ;-)ありがとう!!! – michaelmcgurk

1

初期化されるforループの外側で "key"を参照しています。また、forループが正しく初期化されていません。ループ内の特定のキーを探していますか?もしそうなら、私は、あなたが鍵を宣言していない あなたはタイムアウト内で参照できるように、あなたのコードのロジックが正常に動作します

function makeid() { 
 
    var text = ""; 
 
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
 

 
    for (var i = 0; i < 5; i++) 
 
    text += possible.charAt(Math.floor(Math.random() * possible.length)); 
 

 
    return text; 
 
} 
 

 

 
var urlParams = new URLSearchParams(window.location.search); 
 
var keysURL = urlParams.keys(); 
 
var keyVal = null; 
 
for (var keyParam in keysURL) { 
 
    // Whatever conditional here.. 
 
    if (true === true) { 
 
    keyVal = keyParam; 
 
    break; 
 
    } 
 
} 
 
setTimeout(function() { 
 
    if (null === keyVal) { // here is where I get my error!! 
 

 
    } else { 
 
    $('#input_1_8').val(makeid()); 
 
    } 
 
}, 3000);
<input id="input_1_8" name="input_1_8" value=""> 
 
<script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script>

+0

これを明確にしてくれてありがとう - 私がどこに間違って行ったかを理解することは素晴らしいことです:) – michaelmcgurk

1

...キー値への外部からの変数を設定し、だろうがあなたが入力すること 変数

var key; 

または

for (var key in keys) {} 
関連する問題