大概是这样:<script language="javascript">
var intIndex=0;
arrList = ["abc", "efg", "hij", "abs", "function", "delete", "clear", "hello", "world", "zswang"];
arrList1 = ["123", "456", "789", "886", "784", "010", "1311234567"];
window.onload = function() {
smanPromptList(arrList, "en");
smanPromptList(arrList1, "num");
}
document.write("<div id='__smanDisp' style='position:absolute;display:none;height:30px;background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;' onbulr> </div>");
document.write("<style>.sman_selectedStyle{background-Color:#102681;color:#FFFFFF;}</style>");function smanPromptList(arrList, objInputId) {
if (arrList.constructor != Array) {
alert('smanPromptList初始化失败:第一个参数非数组!');
return;
}
arrList.sort(function(a, b) {
if(a.length > b.length) return 1;
else if (a.length == b.length) return a.localeCompare(b);
else return -1;
});
var objouter = document.getElementById("__smanDisp") //显示的DIV对象
var objInput = document.getElementById(objInputId); //文本框对象
var selectedIndex = -1;
var intTmp; //循环用的:)
if (objInput == null) {
alert('smanPromptList初始化失败:没有找到"' + objInputId + '"文本框');
return;
}
//文本框失去焦点
objInput.onblur = function() {
objouter.style.display = 'none';
}
//文本框按键抬起
objInput.onkeyup = checkKeyCode;
//文本框得到焦点
objInput.onfocus = checkAndShow;
function checkKeyCode() {
var ie = !!document.all;
if (ie) {
var keyCode = event.keyCode
if (keyCode == 40 || keyCode == 38) { //下上
chageSelection(keyCode == 40)
} else if (keyCode == 13) { //回车
outSelection(selectedIndex);
}else {
checkAndShow();
}
} else {
checkAndShow();
}
divPosition();
} function checkAndShow() {
var strInput = objInput.value
if (strInput != "") {
divPosition();
selectedIndex = -1;
objouter.innerHTML = "";
for (intTmp = 0; intTmp < arrList.length; intTmp++) {
for (i = 0; i < arrList[intTmp].length; i++) {
if (arrList[intTmp].substr(i, strInput.length).toUpperCase() == strInput.toUpperCase()) {
addOption(arrList[intTmp], strInput);
break; // zswang insert
}
}
}
objouter.style.display = '';
} else {
objouter.style.display = 'none';
}
function addOption(value, keyw) {
var v = value.replace(keyw, "<b><font color=red>" + keyw + "</font></b>");
objouter.innerHTML += "<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('" +
objInputId + "').value='" + value + "'\">" + v + "</div>"
}
}
function chageSelection(isUp) {
if (objouter.style.display == 'none') {
objouter.style.display = '';
} else {
if (isUp)
selectedIndex++;
else selectedIndex--;
}
var maxIndex = objouter.children.length - 1;
if (selectedIndex < 0) selectedIndex = 0;
if (selectedIndex > maxIndex) selectedIndex = maxIndex;
for (intTmp = 0; intTmp <= maxIndex; intTmp++) {
if (intTmp == selectedIndex) {
objouter.children[intTmp].className = "sman_selectedStyle";
} else {
objouter.children[intTmp].className = "";
}
}
}
function outSelection(Index) {
objInput.value = objouter.children[Index].innerText;
objouter.style.display = 'none';
}
function divPosition() {
objouter.style.top = getAbsoluteHeight(objInput) + getAbsoluteTop(objInput);
objouter.style.left = getAbsoluteLeft(objInput);
objouter.style.width = getAbsoluteWidth(objInput);
}
}function getAbsoluteHeight(ob){
return ob.offsetHeight
}function getAbsoluteWidth(ob){
return ob.offsetWidth
}function getAbsoluteLeft(ob){
var s_el = 0;
el = ob;
while (el) {
s_el = s_el + el.offsetLeft;
el = el.offsetParent;
}
return s_el;
}function getAbsoluteTop(ob) {
var s_el = 0;
el = ob;
while (el) {
s_el = s_el + el.offsetTop;
el = el.offsetParent;
}
return s_el;
}</script>
<input name="en" type="text" id="en" />
<input name="num" type="text" id="num" />
不用太感谢我。
var intIndex=0;
arrList = ["abc", "efg", "hij", "abs", "function", "delete", "clear", "hello", "world", "zswang"];
arrList1 = ["123", "456", "789", "886", "784", "010", "1311234567"];
window.onload = function() {
smanPromptList(arrList, "en");
smanPromptList(arrList1, "num");
}
document.write("<div id='__smanDisp' style='position:absolute;display:none;height:30px;background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;' onbulr> </div>");
document.write("<style>.sman_selectedStyle{background-Color:#102681;color:#FFFFFF;}</style>");function smanPromptList(arrList, objInputId) {
if (arrList.constructor != Array) {
alert('smanPromptList初始化失败:第一个参数非数组!');
return;
}
arrList.sort(function(a, b) {
if(a.length > b.length) return 1;
else if (a.length == b.length) return a.localeCompare(b);
else return -1;
});
var objouter = document.getElementById("__smanDisp") //显示的DIV对象
var objInput = document.getElementById(objInputId); //文本框对象
var selectedIndex = -1;
var intTmp; //循环用的:)
if (objInput == null) {
alert('smanPromptList初始化失败:没有找到"' + objInputId + '"文本框');
return;
}
//文本框失去焦点
objInput.onblur = function() {
objouter.style.display = 'none';
}
//文本框按键抬起
objInput.onkeyup = checkKeyCode;
//文本框得到焦点
objInput.onfocus = checkAndShow;
function checkKeyCode() {
var ie = !!document.all;
if (ie) {
var keyCode = event.keyCode
if (keyCode == 40 || keyCode == 38) { //下上
chageSelection(keyCode == 40)
} else if (keyCode == 13) { //回车
outSelection(selectedIndex);
}else {
checkAndShow();
}
} else {
checkAndShow();
}
divPosition();
} function checkAndShow() {
var strInput = objInput.value
if (strInput != "") {
divPosition();
selectedIndex = -1;
objouter.innerHTML = "";
for (intTmp = 0; intTmp < arrList.length; intTmp++) {
for (i = 0; i < arrList[intTmp].length; i++) {
if (arrList[intTmp].substr(i, strInput.length).toUpperCase() == strInput.toUpperCase()) {
addOption(arrList[intTmp], strInput);
break; // zswang insert
}
}
}
objouter.style.display = '';
} else {
objouter.style.display = 'none';
}
function addOption(value, keyw) {
var v = value.replace(keyw, "<b><font color=red>" + keyw + "</font></b>");
objouter.innerHTML += "<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('" +
objInputId + "').value='" + value + "'\">" + v + "</div>"
}
}
function chageSelection(isUp) {
if (objouter.style.display == 'none') {
objouter.style.display = '';
} else {
if (isUp)
selectedIndex++;
else selectedIndex--;
}
var maxIndex = objouter.children.length - 1;
if (selectedIndex < 0) selectedIndex = 0;
if (selectedIndex > maxIndex) selectedIndex = maxIndex;
for (intTmp = 0; intTmp <= maxIndex; intTmp++) {
if (intTmp == selectedIndex) {
objouter.children[intTmp].className = "sman_selectedStyle";
} else {
objouter.children[intTmp].className = "";
}
}
}
function outSelection(Index) {
objInput.value = objouter.children[Index].innerText;
objouter.style.display = 'none';
}
function divPosition() {
objouter.style.top = getAbsoluteHeight(objInput) + getAbsoluteTop(objInput);
objouter.style.left = getAbsoluteLeft(objInput);
objouter.style.width = getAbsoluteWidth(objInput);
}
}function getAbsoluteHeight(ob){
return ob.offsetHeight
}function getAbsoluteWidth(ob){
return ob.offsetWidth
}function getAbsoluteLeft(ob){
var s_el = 0;
el = ob;
while (el) {
s_el = s_el + el.offsetLeft;
el = el.offsetParent;
}
return s_el;
}function getAbsoluteTop(ob) {
var s_el = 0;
el = ob;
while (el) {
s_el = s_el + el.offsetTop;
el = el.offsetParent;
}
return s_el;
}</script>
<input name="en" type="text" id="en" />
<input name="num" type="text" id="num" />
不用太感谢我。
还是要感谢你哦~
不过这2个数组我要动态在数据库里读取啊
arrList = ["abc", "efg", "hij", "abs", "function", "delete", "clear", "hello", "world", "zswang"];
arrList1 = ["123", "456", "789", "886", "784", "010", "1311234567"];
这样的格式我不知道怎么循环哦~xixi
原来用的是这样的
var intIndex=0;
arrList = new Array();
<%Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "select * from [table1] where typ='1'"
rs.Open sql,conn,1,1
if rs.EOF and rs.BOF then
else
do while not rs.eof%>
arrList[intIndex++] = "<%=rs("num")%>|<%=rs("names")%>";
<%
rs.MoveNext
Loop
end if%>var intIndex1=0;
arrList1 = new Array();
<%Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "select * from [table2] where typ='2'"
rs.Open sql,conn,1,1
if rs.EOF and rs.BOF thenelse
do while not rs.eof%>
arrList1[intIndex1++] = "<%=rs("Num")%>|<%=rs("Names")%>";
<%
rs.MoveNext
Loop
end if%>
zswang的代码可以显示,但是我不会用循环哦,~
arrList = new Array();arrList[intIndex++] = "abc";
arrList[intIndex++] = "efg";
arrList[intIndex++] = "hij";
------
arrList = ["abc", "efg", "hij"];两种写法是一样的。关键的地方是:一个window对象只能赋值一个onload事件
原来的代码:
smanPromptList(arrList,"en");
smanPromptList(arrList1,"num");
会覆盖掉前面复制的onload事件。动手测试再说吧。
但是我的问题就是
arrList1 = ["123", "456", "789", "886", "784", "010", "1311234567"];
如果是这样的数组,我用asp不会写循环赋值
如果是下面这样的倒是好赋值了,上面这样的我就不会了,不知道怎么能放到一起,把“123”“456”按照你的形式给赋值(arrList1 = ["123", "456", "789", "886", "784", "010", "1311234567"]; )
var intIndex1=0;
arrList1 = new Array();
<%Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "select * from [table2] where typ='2'"
rs.Open sql,conn,1,1
if rs.EOF and rs.BOF thenelse
do while not rs.eof%>
arrList1[intIndex1++] = " <%=rs("Num")%>| <%=rs("Names")%>";
<%
rs.MoveNext
Loop
end if%>
谢谢zswang,