0

我有一个包含以下元素的 html 表单

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

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

2)一个文本框(用户输入一个模式,比如 2013 年)

3)一个按钮

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

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

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

s1.txt2013
s2.txt2013

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

谁能告诉我该怎么做?

4

2 回答 2

2

也许您需要两个列表框(选择标签),其中一个隐藏为主数据源,其中一个对用户可见,您可以使用以下代码并添加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);
        }
    }
};
于 2013-05-29T04:10:23.120 回答
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>
于 2013-05-29T03:54:45.617 回答