下面的代码行不行?基本实现联想功能,但样式可能不符合要求,自己改改吧
<html>
<head>
<script language="JavaScript">
<!--
var arrList=null;
function init(){
var dltObj=document.getElementById("dltShow");
var opts=dltObj.options;
var len=opts.length;
arrList= new Array(len);
for(var i=0;i<len;i++)
arrList[i]=opts[i].value.toLowerCase();
}
function keyup(src){
var strHTML="";
var dltObj=document.getElementById("dltShow");
var len=src.value.length;
for(var i=0;i<arrList.length;i++){
var reg=new RegExp(src.value);
if(reg.test(arrList[i]))
strHTML+='<option value="'+arrList[i]+'">'+arrList[i]+'</option>';
}
dltObj.outerHTML='<select id="dltShow" style="width:100% " multiple size="10">'+strHTML+'</select>';
if(document.getElementById("dltShow").options.length==1){
src.value=document.getElementById("dltShow").options[0].value;
}
}
//-->
</script>
</head>
<body onLoad="init();">
<table cellpadding="0" cellspacing="0" border="0" width="300px">
<tr>
<td width="150"><input type="text" id="txtInput" onpropertychange ="keyup(this)" style="width:100% "></td>
<td width="150">
<select id="dltShow" style="width:100% " multiple size="10">
<option value="http://www.163.com">http://www.163.org</option>
<option value="http://www.sina.com">http://www.sina.com</option>
<option value="http://www.sohu.com">http://www.sohu.com</option>
<option value="http://card.163.com">http://card.163.net</option>
<option value="http://card.sina.com">http://card.sina.com</option>
<option value="http://news.sohu.com">http://news.sohu.com</option>
<option value="http://news.china.com">http://news.china.com</option>
<option value="http://www.sohu.com">http://www.sohu.com</option>
<option value="Ò»¼ûÈç¹Ê">Ò»¼ûÈç¹Ê</option>
<option value="Ò»¼ûÇãÐÄ">Ò»¼ûÇãÐÄ</option>
<option value="Ò»ÃæÖ®Ôµ">Ò»ÃæÖ®Ôµ</option>
<option value="ÈýÐĶþÒâ">ÈýÐĶþÒâ</option>
</select>
</td>
</tr>
</table>
</body>
</html>
<html>
<head>
<script language="JavaScript">
<!--
var arrList=null;
function init(){
var dltObj=document.getElementById("dltShow");
var opts=dltObj.options;
var len=opts.length;
arrList= new Array(len);
for(var i=0;i<len;i++)
arrList[i]=opts[i].value.toLowerCase();
}
function keyup(src){
var strHTML="";
var dltObj=document.getElementById("dltShow");
var len=src.value.length;
for(var i=0;i<arrList.length;i++){
var reg=new RegExp(src.value);
if(reg.test(arrList[i]))
strHTML+='<option value="'+arrList[i]+'">'+arrList[i]+'</option>';
}
dltObj.outerHTML='<select id="dltShow" style="width:100% " multiple size="10">'+strHTML+'</select>';
if(document.getElementById("dltShow").options.length==1){
src.value=document.getElementById("dltShow").options[0].value;
}
}
//-->
</script>
</head>
<body onLoad="init();">
<table cellpadding="0" cellspacing="0" border="0" width="300px">
<tr>
<td width="150"><input type="text" id="txtInput" onpropertychange ="keyup(this)" style="width:100% "></td>
<td width="150">
<select id="dltShow" style="width:100% " multiple size="10">
<option value="http://www.163.com">http://www.163.org</option>
<option value="http://www.sina.com">http://www.sina.com</option>
<option value="http://www.sohu.com">http://www.sohu.com</option>
<option value="http://card.163.com">http://card.163.net</option>
<option value="http://card.sina.com">http://card.sina.com</option>
<option value="http://news.sohu.com">http://news.sohu.com</option>
<option value="http://news.china.com">http://news.china.com</option>
<option value="http://www.sohu.com">http://www.sohu.com</option>
<option value="Ò»¼ûÈç¹Ê">Ò»¼ûÈç¹Ê</option>
<option value="Ò»¼ûÇãÐÄ">Ò»¼ûÇãÐÄ</option>
<option value="Ò»ÃæÖ®Ôµ">Ò»ÃæÖ®Ôµ</option>
<option value="ÈýÐĶþÒâ">ÈýÐĶþÒâ</option>
</select>
</td>
</tr>
</table>
</body>
</html>
这个对英文的处理还可以,但是不能用户自己选择去添加,对中文的处理有局限性!不能逐字节判断!
但是还是谢谢你!
数据量不大,并且只要求支持ie的话,或许可作参考:
http://jkisjk.vip.sina.com/html/EditableSelect1.htm