2017-05-17 9 views
0

Ich habe ein Skript, test.php mit dem folgenden HTML & jQuery.Autocomplete-Feld basierend auf Abfragezeichenfolge mit jQuery

Grundsätzlich, wenn der Benutzer dieses Skript lädt, möchte ich das Eingabefeld mit einer zufälligen Zeichenfolge füllen.

Allerdings, wenn der Benutzer test.php?id= Art von URL besucht, möchte ich dieses Feld nicht ausfüllen.

Wie kann ich dies mit meinem vorhandenen Code tun?


Zur Zeit, als ich den Code ausführen, es gibt mir diese Fehlermeldung:

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> 

Antwort

1

Verwenden Sie die folgenden einfachen js Code zu tun, was Sie wollen, wenn Query-String vorhanden ist oder nicht.

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

Hoffe, das hilft.

+0

Woop - funktioniert !! Vielen Dank, Nasir! :-) – michaelmcgurk

+0

Danke. Bitte markieren Sie die Antwort ebenfalls als korrekt. Glückliche Kodierung. :) –

+0

Willst du - du warst so schnell ich muss noch 2 Minuten warten bevor grünes Häkchen ;-) ;-) Danke !!! – michaelmcgurk

1

Sie verweisen auf einen "Schlüssel" außerhalb der for-Schleife, in der er initialisiert wird. Außerdem wird Ihre for-Schleife nicht richtig initialisiert. Suchen Sie nach einem bestimmten Schlüssel innerhalb der Schleife? Wenn ja, würde ich dann eine externe Variable auf den Schlüsselwert festgelegt, so dass Sie innerhalb des Timeout verweisen können ..

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

Vielen Dank für die Klärung - es ist toll zu verstehen, wo ich falsch gelaufen bin :) – michaelmcgurk

1

Ihr Code Logik funktioniert gut, aber Sie den Schlüssel nicht erklären haben Variable Sie

var key; 

oder

for (var key in keys) {} 
geben kann
Verwandte Themen