在input里输入一字符串,然后要让select下拉框里的选项按此排序,请教怎么实现???

时间:2022-12-23 22:09:49

代码如下

 <input name="strtest" type="text" value=""  onpropertychange="chgselectlist();">

    <select name=comm >
<option  value=' ' selected >---请选择---</option>
<option  value="001062013">aatest</option>
<option  value="001071008">bbtest</option>
<option  value="001071008">ccbbtest</option>
<option  value="001071008">ddtest</option>
<option  value="001071008">faatest</option>
        </select>


我想在文本框里输入一字符串后,select里的包含此字符串的选项被列在前面,
方便用户选择。
比如我输入 "bb" ,则要实现的效果是含有“bb”的选项被列在了前面。

select变成 

<option  value=' ' selected >---请选择---</option>
<option  value="001071008">bbtest</option>
<option  value="001071008">ccbbtest</option>
<option  value="001062013">aatest</option>
<option  value="001071008">ddtest</option>
<option  value="001071008">faatest</option>
        </select>

chgselectlist()里该怎么写呢???

我没有学过javascript,所以请求大家帮忙,谢谢!!!

7 个解决方案

#1


function chgselectlist()
{
var txt = document.all.item("strtest").value // 输入文字
    var txtlength = txt.length

for(var i=0; i<document.all.item("comm").length; i++)
{
if(document.all.item("comm").options[i].text.substring(0, txtlength) == txt)
{
document.all.item("comm").options[i].selected = true
return
}
}

}

#2



谢谢楼上,可是还是没有实现我要的效果,

我是要根据input里的文字,

来把select的文本里凡是含有input里字符串的选项都排在靠前的位置,

好方便用户选择。

奇遇不含有相应字符串的选项,则排在靠后的位置,
仍然要提供给用户选择的。  

#3


up

#4


<script>
function chgselectlist()
{
var txt = document.all.item("strtest").value // 输入文字
var txtlength = txt.length;
obj = document.all.item("comm");
for(var i=0; i<obj.length; i++) {
if(obj.options[i].text.substr(0,txtlength) == txt) {
j = i;
while(j>1 && obj.options[j-1].text.substr(0,txtlength) != txt) {
obj.options[j].swapNode(obj.options[j-1]);
j--;
}
}
}
}
</script>

#5


<script>
function chgselectlist()
{
var tmp=strtest.value,j=0
for(var i=0;i<comm.length;i++)
{
if(eval("comm["+i+"].text.search(/"+tmp+"/)!=-1"))
{
var j=0
comm[i].swapNode(comm[j])
j++
}
}
}
</script>

#6


<script>
function chgselectlist()
{
var tmp=strtest.value,j=0
var j=0
for(var i=0;i<comm.length;i++)
{
if(eval("comm["+i+"].text.search(/"+tmp+"/)!=-1"))
{
comm[i].swapNode(comm[j])
j++
}
}
}
</script>

#7


我只测试了sw47(小豆冰棍儿) 是可以用的,

没有测试xuzuning(唠叨) 的,但我想也应该是可以的,

而且我现在采用了sw47(小豆冰棍儿) 写的函数。

谢谢大家的帮忙。

#1


function chgselectlist()
{
var txt = document.all.item("strtest").value // 输入文字
    var txtlength = txt.length

for(var i=0; i<document.all.item("comm").length; i++)
{
if(document.all.item("comm").options[i].text.substring(0, txtlength) == txt)
{
document.all.item("comm").options[i].selected = true
return
}
}

}

#2



谢谢楼上,可是还是没有实现我要的效果,

我是要根据input里的文字,

来把select的文本里凡是含有input里字符串的选项都排在靠前的位置,

好方便用户选择。

奇遇不含有相应字符串的选项,则排在靠后的位置,
仍然要提供给用户选择的。  

#3


up

#4


<script>
function chgselectlist()
{
var txt = document.all.item("strtest").value // 输入文字
var txtlength = txt.length;
obj = document.all.item("comm");
for(var i=0; i<obj.length; i++) {
if(obj.options[i].text.substr(0,txtlength) == txt) {
j = i;
while(j>1 && obj.options[j-1].text.substr(0,txtlength) != txt) {
obj.options[j].swapNode(obj.options[j-1]);
j--;
}
}
}
}
</script>

#5


<script>
function chgselectlist()
{
var tmp=strtest.value,j=0
for(var i=0;i<comm.length;i++)
{
if(eval("comm["+i+"].text.search(/"+tmp+"/)!=-1"))
{
var j=0
comm[i].swapNode(comm[j])
j++
}
}
}
</script>

#6


<script>
function chgselectlist()
{
var tmp=strtest.value,j=0
var j=0
for(var i=0;i<comm.length;i++)
{
if(eval("comm["+i+"].text.search(/"+tmp+"/)!=-1"))
{
comm[i].swapNode(comm[j])
j++
}
}
}
</script>

#7


我只测试了sw47(小豆冰棍儿) 是可以用的,

没有测试xuzuning(唠叨) 的,但我想也应该是可以的,

而且我现在采用了sw47(小豆冰棍儿) 写的函数。

谢谢大家的帮忙。