繁体   English   中英

在HTML表格中搜索-组合多个值(下拉列表,文本字段..)

[英]Search in HTML-table - Combine multiple values (dropdown, textfield ..)

是否可以在表单中添加下拉菜单,并且该函数将组合下拉菜单中的所选值和要搜索的文本字段的值?

该代码适用于HTML表格,以便访问者可以在表格中进行搜索。

谢谢! :)

<script type="text/javascript">

function search (phrase, _id){
    var words = phrase.value.toLowerCase().split(" ");
    var table = document.getElementById(_id);
    var ele;
    for (var r = 0; r < table.rows.length; r++){
        ele = table.rows[r].innerHTML.replace(/<[^>]+>/g,"");
        var displayStyle = 'none';
        for (var i = 0; i < words.length; i++) {
            if (ele.toLowerCase().indexOf(words[i])>=0)
                displayStyle = '';
            else {
                displayStyle = 'none';
                break;
            }
        }
        table.rows[r].style.display = displayStyle;
    }
}

</script>

<form>

<b>Words:</b>

<input name="filter" onkeyup="search(this, 'my-table', 1)" type="text">

</form>

var words = phrase.value.toLowerCase().split(" ");
尝试这个:

var dd = document.getElementById("your_dropdown_id");
words.push(dd.options[dd.selectedIndex].text);



更新:

上面显示的是您原始问题的答案。 现在您有一些不同的问题。

您的问题是,您正在搜索一个带有大写字母的字符串(即“ HBO”或“ MBO”),并且该字符串中的所有字母都为小写ele.toLowerCase() ifif条件中使用了ele.toLowerCase()
现在尝试这个:

var displayStyle = 'block';
for (var i = 0; i < words.length; i++)
    if (ele.toLowerCase().indexOf(words[i].toLowerCase()) == -1) {
        displayStyle = 'none';
        break;
    }

displayStyle初始化为'block' ,并在break;之前进行更改break; 总体而言,上面显示的代码是实现此逻辑的最佳方法。
希望这能解决您的问题。

也许我做错了..

function search (phrase, _id){
    var words = phrase.value.toLowerCase().split(" ");

    var dd = document.getElementById("education");
    words.push(dd.options[dd.selectedIndex].text);

    var table = document.getElementById(_id);
    var ele;
    for (var r = 0; r < table.rows.length; r++){
        ele = table.rows[r].innerHTML.replace(/<[^>]+>/g,"");
        var displayStyle = 'none';
        for (var i = 0; i < words.length; i++) {
            if (ele.toLowerCase().indexOf(words[i])>=0)
                displayStyle = '';
            else {
                displayStyle = 'none';
                break;
            }
        }
        table.rows[r].style.display = displayStyle;
    }
}

</script>

<form>

<b>Words:</b>

<input name="filter" onkeyup="search(this, 'my-table', 1)" type="text"><br>

<b>Education:</b>

<select id="education">
   <option value="">Select</option>
   <option value="MBO">MBO</option>
   <option value="HBO">HBO</option>
   <option value="University">University</option>
</select>

</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM