javascript选择框功能:基于选项值过滤

时间:2018-04-30 06:36:17

标签: javascript jquery html

我有一个javascript函数,它将根据已经正常工作的选择框选项值过滤表行。现在我正在尝试实现一个函数,它将根据该值之后的选择框值+任何文本过滤行。顺便说一下我是javascript的新手。

我的选择框代码:

        <select name="filterdivision" id="filterdivision">
        <option selected="selected" value="">Select Division</option>
        <option value="Metals and Minerals">Metals and Minerals</option>
        <option value="Industrial">Industrial</option>
        <option value="Rail">Rail</option>
        <option value="Corporate">Corporate</option>
        <option value="GSC">GSC</option>
        </select>

我的表格HTML

        <table class="winner-data" width="100%">
        <thead>
        <tr>
        <th class="sort" data-sort="name">Heading 1</th>
        <th class="sort" data-sort="category">Heading 2</th>
        <th class="sort" data-sort="division">Division/Region</th>
        </tr>
        </thead>
        <tbody class="list">
        <tr>
        <td class="name">IKG Mexico Management Team</td>
        <td class="category">Customer</td>
        <td class="division">Industrial</td>
        </tr>
        <tr>
        <td class="name">Tubarão Brazil Site</td>
        <td class="category">Customer</td>
        <td class="division">Metals and Minerals</td>
        </tr>
        <tr>
        <td class="name">Euridice Mason</td>
        <td class="category">Customer</td>
        <td class="division">Metals and Minerals</td>
        </tr>
        <tr>
        <td class="name">Brazil Tax Team</td>
        <td class="category">Customer</td>
        <td class="division">Metals and Minerals Brazil</td>
        </tr>
        <tr>
        <td class="name">M&amp;M Bid and Contract Team</td>
        <td class="category">Customer</td>
        <td class="division">Metals and Minerals Central</td>
        </tr>
        </table>

我的Javascript:

$('#filtercategory').change(function () {
var selection = this.value;

if($(this).val()!==""){
    // filter items in the list
    userList.filter(function (item) {
        return (item.values().category == selection);
    });     
}else{
    userList.filter();
    return false;
}

}); 

当前函数是过滤除法:例如它将过滤“金属和矿物”,所以我希望它过滤“金属和矿物+任何东西”

1 个答案:

答案 0 :(得分:1)

目前正在进行过滤,以使类别(松散地)等于选择:

return (item.values().category == selection);

如果要按除法 包含选择进行过滤,请使用.includes字符串方法:

return item.values().division.toLowerCase().includes(selection.toLowerCase());

或者,如果您不想测试toLowerCase

return item.values().division.includes(selection);

如果您想支持旧浏览器,则可能需要填充。