First page Back Continue Last page Image

Auto completing Form Fields

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;

}

<!DOCTYPE html>

<html>

<head>

<title>Auto-fill Form Fields</title>

<link rel="stylesheet" href="script06.css">

<script src="script06.js"></script>

</head>

<body>

<form action="#">

Please enter your state:<br>

<input type="text" id="searchField" autocomplete="off">

<br>

<div id="popups"> </div>

</form>

</body>

</html>

window.addEventListener("load",initAll,false);

var xhr = false;

var statesArray = new Array();

function initAll() {

document.getElementById("searchField").addEventListener("keyup",searchSuggest,false);

if (window.XMLHttpRequest) {

xhr = new XMLHttpRequest();

}

else {

if (window.ActiveXObject) {

try {

xhr = new ActiveXObject("Microsoft.XMLHTTP");

}

catch (e) {

}

}

}

if (xhr) {

xhr.addEventListener("readystatechange",setStatesArray,false);

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 tempDiv = document.createElement("div");

tempDiv.innerHTML = thisState;

tempDiv.addEventListener("click",makeChoice,false);

tempDiv.className = "suggestions";

document.getElementById("popups").appendChild(tempDiv);

}

}

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 thisDiv = evt.target;

}

else {

var thisDiv = window.event.srcElement;

}

document.getElementById("searchField").value = thisDiv.innerHTML;

document.getElementById("popups").innerHTML = "";

}