In diesem Artikel wird hauptsächlich die Verwendung von Ajax zum automatischen Ausfüllen von Formularfeldern vorgestellt. Freunde, die sich für Ajax interessieren, können sich auf das Beispiel von Ajax zum automatischen Ausfüllen von Formularfeldern beziehen!
Skript eins:
<!DOCTYPE html> <html> <head> <title>Auto-fill Form Fields</title> <link rel="stylesheet"href="script06.css" rel="external nofollow" > <script src="script06.js"></script> </head> <body> <form action="#"> Please enter your state:<br> <input type="text" id="searchField" autocomplete="off"><br> <p id="popups"> </p> </form> </body> </html>
Skript zwei:
body, #searchfield { font: 1.2em arial, helvetica,sans-serif; } .suggestions { background-color: #FFF; padding: 2px 6px; border: 1px solid #000; } .suggestions:hover { background-color: #69F; } #popups { position: absolute; } #searchField.error { background-color: #FFC; }
Skript drei:
window.onload = initAll; var xhr = false; var statesArray = new Array(); function initAll() { document.getElementById("searchField").onkeyup = searchSuggest; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } if (xhr) { xhr.onreadystatechange = setStatesArray; xhr.open("GET", "us-states.xml",true); xhr.send(null); } else { alert("Sorry, but I couldn't create an XMLHttpRequest"); } } function setStatesArray() { if (xhr.readyState == 4) { if (xhr.status == 200) { if (xhr.responseXML) { var allStates = xhr.responseXML.getElementsByTagName("item"); for (var i=0; i<allStates.length; i++) { statesArray[i] = allStates[i].getElementsByTagName("label")[0].firstChild; } } } else { alert("There was a problem with the request " + xhr.status); } } } function searchSuggest() { var str = document.getElementById("searchField").value; document.getElementById("searchField").className = ""; if (str != "") { document.getElementById("popups").innerHTML = ""; for (var i=0; i<statesArray.length;i++) { var thisState = statesArray[i].nodeValue; if (thisState.toLowerCase().indexOf(str.toLowerCase())== 0) { var tempp = document.createElement("p"); tempp.innerHTML = thisState; tempp.onclick = makeChoice; tempp.className = "suggestions"; document.getElementById("popups").appendChild(tempp); } } var foundCt = document.getElementById("popups").childNodes.length; if (foundCt == 0) { document.getElementById("searchField").className ="error"; } if (foundCt == 1) { document.getElementById("searchField").value = document.getElementById("popups"). firstChild.innerHTML; document.getElementById("popups").innerHTML = ""; } } } function makeChoice(evt) { if (evt) { var thisp = evt.target; } else { var thisp = window.event.srcElement; } document.getElementById("searchField").value = thisp.innerHTML; document.getElementById("popups").innerHTML = ""; }
Die Analyse sieht wie folgt aus:
1. Bitte geben Sie Ihr Bundesland ein:
4 .
if (xhr.responseXML) { var allStates = xhr.responseXML.getElementsByTagName("item"); for (var i=0; i<allStates.length; i++) { statesArray[i] = allStates[i].getElementsByTagName("label")[0].firstChild; } }
Wir lesen die Datei hier, sehen uns jeden Elementknoten an, suchen den Etikettenknoten und speichern das Etikett firstChild
(der Staatsname selbst). Jeder Statusname wird in einem Element im StatesArray-Array gespeichert.
5. var str = document.getElementById("searchField").value;
document.getElementById("searchField").className = "";
Wenn Sie mit der Eingabe in das Feld beginnen, wird es ausgeführt der Code im searchSuggest()-Ereignishandler. Ermitteln Sie zunächst den Wert von
searchField, also den bisher eingegebenen Informationen. Als nächstes löschen Sie das Klassenattribut dieses Feldes.
6. if (str != "") {
document.getElementById("popups").innerHTML = "";
Wenn keine Informationen eingegeben wurden, tun wir hier nichts Überprüfen Sie, ob der Benutzer einen Wert eingegeben hat,
und öffnen Sie dann eine Liste möglicher Werte. Wenn bereits einige Informationen eingegeben wurden, wird die Liste der vorherigen möglichen Werte gelöscht.
7. for (var i=0; i
Durchlaufen Sie nun die Liste der Statusnamen und ändern Sie die aktuellen angesehen Der Statusname wird in thisState gespeichert.
8. if (thisState.toLowerCase().indexOf(str.toLowerCase())== 0) {
Wir wollen prüfen, ob das, was der Benutzer bisher eingegeben hat, Teil eines Staatsnamens ist – aber nur Damit nicht genug,
müssen wir auch darauf achten, dass die Eingabe am Anfang des Staatsnamens steht. Wenn Sie Kansas eingeben, möchten Sie schließlich nicht, dass im Dropdown-Feld Arkansas
oder Kansas angezeigt wird. Stellen Sie bei dieser Prüfung außerdem sicher, dass beide Zeichenfolgen Kleinbuchstaben sind, bevor Sie indexOf() überprüfen.
Wenn indexOf() 0 zurückgibt (d. h. die Eingabezeichenfolge wird am Anfang von thisState gefunden),
wissen wir, dass eine Übereinstimmung gefunden wurde.
9.
var tempp = document.createElement("p"); tempp.innerHTML = thisState; tempp.onclick = makeChoice; tempp.className = "suggestions"; document.getElementById("popups").appendChild(tempp);
Da dieser Staatsname ein möglicher Wert ist, möchten wir ihn dem hinzufügen Liste. Die Implementierungsmethode besteht darin, ein temporäres
p zu erstellen, dessen innerHTML auf den Statusnamen zu setzen, den Onclick-Handler und den Klassennamen hinzuzufügen und dann das gesamte p
zu den Popups p hinzuzufügen. Durch das Hinzufügen jedes Bundesstaatsnamens als separates p können wir jeden
Bundesstaatsnamen mithilfe von JavaScript und CSS bearbeiten.
10. varfoundCt = document.getElementById("popups").childNodes.length;
Nachdem wir alle Staatsnamen durchlaufen haben, müssen wir ein Popup-Fenster erstellen – aber wie viele Staatsnamen haben wir erhalten? Hier berechnen wir diesen
-Wert: FoundCt.
11. if (foundCt == 0) {
document.getElementById("searchField").className = "error";
}
Wenn FoundCt 0 ist, bedeutet dies, dass der Benutzer etwas Falsches eingegeben hat Inhalt. Wir setzen den Klassennamen auf Fehler, um den Benutzer
darüber zu informieren, dass er einen Fehler gemacht hat. Diese Einstellung führt dazu, dass das Eingabefeld einen hellgelben Hintergrund hat (dies wird durch die CSS-Stilregel in Skript 13-17 gesteuert).
12.
if (foundCt == 1) { document.getElementById("searchField").value = document.getElementById ➝("popups").firstChild.innerHTML; document.getElementById("popups").innerHTML = ""; }
Wenn „foundCt“ 1 ist, wissen wir, dass eine eindeutige Übereinstimmung gefunden wurde, sodass wir konvertieren können Geben Sie den Namen des Staates in das Feld ein. Wenn der Benutzer
ca eingegeben hat, muss er Lifornia nicht eingeben, da wir bereits wissen, welchen Bundesstaat er eingeben möchte. Wir füllen das Eingabefeld mit dem eindeutigen p in den
-Popups aus, um automatisch den vollständigen Staatsnamen bereitzustellen, und löschen dann die Popups p.
13.
function makeChoice(evt) { if (evt) { var thisp = evt.target; } else { var thisp = window.event.srcElement; } document.getElementById("searchField").value = thisp.innerHTML; document.getElementById("popups").innerHTML = ""; }
Eine andere Möglichkeit, einen Bundesstaatsnamen einzugeben, besteht darin, in der Popup-Liste auf einen Bundesstaat zu klicken. In diesem Fall wird der Event-Handler makeChoice() aufgerufen. Zuerst finden wir heraus, auf welchen Statusnamen der Benutzer geklickt hat, indem wir das Ziel des Ereignisses überprüfen, das einen bestimmten p bereitstellt.
Wenn Sie sich das innerHTML dieses p ansehen, erhalten Sie den Namen des Staates, und wir geben den Namen des Staates in das Eingabefeld ein. Löschen Sie abschließend die Popup-
-Liste möglicher Werte.
Verwandte Empfehlungen:
AJAX-Methode zum Implementieren der Bildvorschau und zum Hochladen und Generieren von Miniaturansichten
jquery und iframe Ermöglicht die gemeinsame Nutzung eines Ajax-Upload-Effekts.
Ajax überträgt Array-Parameterwerte an den Server. Detailliertes Beispiel
Das obige ist der detaillierte Inhalt vonBeispiel für Ajax zum automatischen Ausfüllen von Formularfeldern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!