页面:
<body>
<div style="width: 500px;">
<form id="frmSearch" action="">
<input type="text" id="txtSearch" name="clientNameSearch" onkeyup="searchSuggest('SearchSuggest.do','clientNameSearch','clientNamesearch');" autocomplete="off"/>
<input type="submit" id="cmdSearch" name="cmdSearch" value="Search"/><br />
<div id="clientNamesearch">
</div>
<input type="text" id="txtSearch" name="appSearch" onkeyup="searchSuggest('aaa.do','appSearch','appsearch');" autocomplete="off"/>
<input type="submit" id="cmdSearch" name="cmdSearch" value="Search"/><br />
<div id="appsearch">
</div>
</form>
</div>
</body>JS: //Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
}
}
function createAjaxObj(){
var httprequest=false;
if (window.XMLHttpRequest)
{ // if Mozilla, Safari etc.
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml');
}
else if (window.ActiveXObject)
{ // if IE
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return httprequest
}
//Our XmlHttpRequest object to get the auto suggest
var searchReq = createAjaxObj();
//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(actionName,input_name,div_id) {
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
var str =document.getElementById(input_name).value;
searchReq.open("GET", actionName+'?search='+str,true);
searchReq.onreadystatechange = handleSearchSuggest(input_name,div_id);
searchReq.send(null);
}
}
//Called when the AJAX response is returned.
function handleSearchSuggest(input_name,div_id) {
if (searchReq.readyState == 4) {
var ss = document.getElementById(div_id)
ss.innerHTML = '';
var str = searchReq.responseText.split("\n");
for(i=0; i < str.length - 1; i++) {
//Build our element string. This is cleaner using the DOM, but
//IE doesn't support dynamically added attributes.
var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
suggest += 'onmouseout="javascript:suggestOut(this);" ';
suggest += 'onclick="javascript:setSearch(this.innerHTML,"'+input_name+'","'+div_id+'");" ';
suggest += 'class="suggest_link">' + str[i] + '</div>';
ss.innerHTML += suggest;
}
}
} //Mouse over function
function suggestOver(div_value) {
div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
div_value.className = 'suggest_link';
}
//Click function
function setSearch(value,input_name,div_id) {
document.getElementById(input_name).value = value;
document.getElementById(div_id).innerHTML = '';
}我用一个function分别控制2个INPUT域,如果不传参数,对一个 INPUT的话,好用,传参数以后不好用了,在searchReq.readyState==1的时候出问题,说类型不匹配
<body>
<div style="width: 500px;">
<form id="frmSearch" action="">
<input type="text" id="txtSearch" name="clientNameSearch" onkeyup="searchSuggest('SearchSuggest.do','clientNameSearch','clientNamesearch');" autocomplete="off"/>
<input type="submit" id="cmdSearch" name="cmdSearch" value="Search"/><br />
<div id="clientNamesearch">
</div>
<input type="text" id="txtSearch" name="appSearch" onkeyup="searchSuggest('aaa.do','appSearch','appsearch');" autocomplete="off"/>
<input type="submit" id="cmdSearch" name="cmdSearch" value="Search"/><br />
<div id="appsearch">
</div>
</form>
</div>
</body>JS: //Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
}
}
function createAjaxObj(){
var httprequest=false;
if (window.XMLHttpRequest)
{ // if Mozilla, Safari etc.
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml');
}
else if (window.ActiveXObject)
{ // if IE
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return httprequest
}
//Our XmlHttpRequest object to get the auto suggest
var searchReq = createAjaxObj();
//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(actionName,input_name,div_id) {
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
var str =document.getElementById(input_name).value;
searchReq.open("GET", actionName+'?search='+str,true);
searchReq.onreadystatechange = handleSearchSuggest(input_name,div_id);
searchReq.send(null);
}
}
//Called when the AJAX response is returned.
function handleSearchSuggest(input_name,div_id) {
if (searchReq.readyState == 4) {
var ss = document.getElementById(div_id)
ss.innerHTML = '';
var str = searchReq.responseText.split("\n");
for(i=0; i < str.length - 1; i++) {
//Build our element string. This is cleaner using the DOM, but
//IE doesn't support dynamically added attributes.
var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
suggest += 'onmouseout="javascript:suggestOut(this);" ';
suggest += 'onclick="javascript:setSearch(this.innerHTML,"'+input_name+'","'+div_id+'");" ';
suggest += 'class="suggest_link">' + str[i] + '</div>';
ss.innerHTML += suggest;
}
}
} //Mouse over function
function suggestOver(div_value) {
div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
div_value.className = 'suggest_link';
}
//Click function
function setSearch(value,input_name,div_id) {
document.getElementById(input_name).value = value;
document.getElementById(div_id).innerHTML = '';
}我用一个function分别控制2个INPUT域,如果不传参数,对一个 INPUT的话,好用,传参数以后不好用了,在searchReq.readyState==1的时候出问题,说类型不匹配
等楼下的好心人解决。