如何根据文本框值过滤列表框的内容

时间:2013-05-29 03:51:51

标签: javascript html

我有一个html表单,其中包含以下元素

1)一个列表框(包含文件名列表)

  s1.txt2013
  s2.txt2013
  s3.txt2012
  s4.txt2012

2)文本框(用户输入的图案说2013)

3)一个按钮

默认列表框包含上面提到的4个文件名。

当用户在文本框中输入文本时(例如,他在文本框中输入2013),然后按下按钮,则应根据文本框中提到的文本过滤掉列表框内容< / p>

所以在这种情况下单击按钮后,列表框应该只包含两个值(即只显示2013年出现的值)。

s1.txt2013
s2.txt2013

我该怎么办?  我做了以下方式.. 我正在使用一个javascript函数,它将获取javascript数组中列表框的所有选项值。现在我无法搜索2013年的数组,并使用包含2013的值填充相同的列表框。

谁能告诉我怎么做?

2 个答案:

答案 0 :(得分:1)

你尝试过使用.test吗?对我来说这将是一个很好的方法。

http://www.w3schools.com/jsref/jsref_regexp_test.asp

<script>

var str="Hello world!";
//look for "Hello"
var patt=/Hello/g;
var result=patt.test(str);
document.write("Returned value: " + result); 

//look for "W3Schools"
patt=/W3Schools/g;
result=patt.test(str);
document.write("<br>Returned value: " + result);

</script>

答案 1 :(得分:1)

也许您需要两个列表框(选择标记),其中一个被隐藏为主数据源,其中一个对用户可见,您可以使用以下代码并将onclick="buttonClicked()"添加到按钮属性。

function buttonClicked () {
    var textbox = document.getElementById('YOUR TEXTBOX ID'),
        listbox = document.getElementById('YOUR SELECT ID'),
        mainListbox = document.getElementById('YOUR MAIN SELECT ID');

    listbox.innerHTML = '';
    for (var childIndex = 0; childIndex < mainListbox.children.length; childIndex++) {
        var child = mainListbox.children[childIndex];
        if (child.innerHTML.search(textbox.value) != -1) {
            option = document.createElement('option');
            option.innerHTML = child.innerHTML;
            listbox.appendChild(option);
        }
    }
};