0

我正在组合框中填充列表,例如

在此处输入图像描述

这是我在文本框中调用onkeyup的函数:

function findword(id, comptext){

        if(comptext.value != ''){
            for (i=0;i<id.options.length;i++){
                id.options[i].selected = false;
            }

            var sc=comptext.value;
            var r, re;
            re = /\(/i;
            r = sc.replace(re, "\\(");
            sc=r;
            re = /\)/i;
            r = sc.replace(re, "\\)");
            sc=r;
            re = /\./i;
            r = sc.replace(re, "\\.");
            sc=r;
            re = /\+/i;
            r = sc.replace(re, "\\+");
            sc=r;
            re = /\?/i;
            r = sc.replace(re, "\\?");
            sc=r;
            var cmplength=sc.length;
            var rex=RegExp(sc, "gi");
            for (i=0;i<id.options.length;i++){
                var sts=id.options[i].text.substring(0,cmplength);
                var result=sts.search(rex);
                if(result>-1){
                    id.options[i].selected = true;
                }
            }
        }else{
            for (i=0;i<id.options.length;i++){
                id.options[i].selected = false;
            }
        }
    }

使用此功能,我可以选择所有以文本框中指定输入开头的值,假设我输入api它选择所有以api开头的值,但如果我输入颜色它什么也不做。

现在请查看上述功能并指出我还需要添加哪些检查以及我应该在哪里添加这些检查?

4

1 回答 1

0

好吧,我自己修好了

function findword(id, comptext){

        if(comptext.value != ''){
            var srcit = comptext.value;

            for (i=0;i<id.options.length;i++){
                id.options[i].selected = false;
            }

            var patt = new RegExp(srcit, 'i');

            for (i=0;i<id.options.length;i++){

                var result = patt.exec(id.options[i].text);
                if(result != null){
                    id.options[i].selected = true;
                }
            }
        }else{
            for (i=0;i<id.options.length;i++){
                id.options[i].selected = false;
            }
        }
    }

http://www.w3schools.com/js/js_obj_regexp.asp

于 2012-08-20T11:31:29.963 回答