<select >
<option>111</option>
<option>1121</option>
<option>1131</option>
<option>2131</option>
</select>
在select focus后key进1
选中的是第一个1打头的选项
再key
选中的是下一个1打头的选项
再key
选中的是再下一个1打头的选项浏览器是这么做的,还算是比较体贴
不见得比楼主的想法差啊---个人之见
<option>111</option>
<option>1121</option>
<option>1131</option>
<option>2131</option>
</select>
在select focus后key进1
选中的是第一个1打头的选项
再key
选中的是下一个1打头的选项
再key
选中的是再下一个1打头的选项浏览器是这么做的,还算是比较体贴
不见得比楼主的想法差啊---个人之见
<head>
<script language="javascript">
function show(value) {
var obj = new Array()
var x = 0
for(i=0;i<slt.options.length;i++) {
if(slt.options[i].text.substr(0,value.length)==value) {
obj[x] = slt.removeChild(slt.options[i]);
x++
}
} for (i=0;i<obj.length;i++)
{
for (j = 0; j < obj.length - 1 - i; j++){
temp1 = obj[j].text*1
temp2 = obj[j+1].text*1
if (temp1 < temp2) {
t = obj[j];
obj[j] = obj[j + 1];
obj[j+1] = t;
}
}
} for (a in obj)
slt.insertBefore(obj[a],slt.children[0])
slt.options[0].selected = true
}
</script>
</head>
<body>
<select id="slt">
<option>1110</option>
<option>1121</option>
<option>1131</option>
<option>2131</option>
</select>
<input type="text" onKeyUp="show(this.value)"/>
</body>
</html>
-----------------
<html>
<head>
<script language="javascript">
function show(value) {
var obj = new Array()
var x = 0
if (value.replace(/\s+/,"")!="")
{
for(i=0;i<slt.options.length;i++) {
if(slt.options[i].text.substr(0,value.length)==value) {
obj[x] = slt.options[i];
x++
}
}
for(a in obj)
slt.removeChild(obj[a])
for (i=0;i<obj.length;i++)
{
for (j = 0; j < obj.length - 1 - i; j++){
temp1 = obj[j].text*1
temp2 = obj[j+1].text*1
if (temp1 < temp2) {
t = obj[j];
obj[j] = obj[j + 1];
obj[j+1] = t;
}
}
}
for (a in obj)
slt.insertBefore(obj[a],slt.children[0])
slt.options[0].selected = true
}
}
</script>
</head>
<body>
<select id="slt">
<option>1110</option>
<option>1121</option>
<option>1131</option>
<option>2131</option>
</select>
<input type="text" onKeyUp="show(this.value)"/>
</body>
</html>
<head>
<script language="javascript">
function show(value) {
for(i=0;i<slt.options.length;i++) {
var stext=slt.options[i].text;
if(stext.indexOf(value)==0) {
slt.options[i]=null;
slt.add(new Option(stext),0);
slt.selectedIndex=0;
break;
}
}
}
</script>
</head>
<body>
<select id="slt">
<option>911</option>
<option>1121</option>
<option>1131</option>
<option>4131</option>
<option>2131</option>
</select>
<input type="text" onpropertychange="show(this.value)"/>
</body>
</html>
<html>
<head>
<script language="javascript">
function show(value) {
var obj = new Array()
var x = 0
if (value.replace(/\s+/,"")!="")
{
for(i=0;i<slt.options.length;i++) {
if(slt.options[i].text.substr(0,value.length)==value) {
obj[x] = slt.options[i];
x++
}
}
for(a in obj)
slt.removeChild(obj[a])
for (i=0;i<obj.length;i++)
{
for (j = 0; j < obj.length - 1 - i; j++){
temp1 = obj[j].text*1
temp2 = obj[j+1].text*1
if (temp1 < temp2) {
t = obj[j];
obj[j] = obj[j + 1];
obj[j+1] = t;
}
}
}
for (a in obj)
slt.insertBefore(obj[a],slt.children[0])
slt.options[0].selected = true
}
}
</script>
</head>
<body>
<select id="slt">
<option>a</option>
<option>ab</option>
<option>abc</option>
<option>b</option>
<option>bd</option>
<option>bde</option>
<option>c</option>
</select>
<input type="text" onKeyUp="show(this.value)"/>
</body>
</html>
我只是把你的select里面的option换成了字母。你运行看看,就知道了
--------------------
temp1 = obj[j].text*1 ---> temp1 = obj[j].text
temp2 = obj[j+1].text*1 ---> temp2 = obj[j+1].text
------------------------------------
for (i=0;i<obj.length;i++)
{
for (j = 0; j < obj.length - 1 - i; j++){
temp1 = obj[j].text*1 //字符串乘以1转换成数字作比较
temp2 = obj[j+1].text*1
if (temp1 < temp2) {
t = obj[j];
obj[j] = obj[j + 1];
obj[j+1] = t;
}
}
}