Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用select筛选表数据时出现问题_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用select筛选表数据时出现问题

Javascript 使用select筛选表数据时出现问题,javascript,jquery,html,Javascript,Jquery,Html,我有一个html表格,它有很多数据。然后我创建了一个select选项来过滤表并显示过滤后的数据选择基于路线列,其中只有3个选项:Marikina、Montalban和Motalban/Marikina 我可以在过滤数据时显示数据,但问题是当我选择Marikina或Montalban时,它也会显示第三个选项,即Montalban/Marikina的路线。 以下是使用select筛选表的jquery代码: $(document).ready(function () { $('.fi

我有一个html表格,它有很多数据。然后我创建了一个select选项来过滤表并显示过滤后的数据<代码>选择基于
路线
列,其中只有3个
选项
MarikinaMontalbanMotalban/Marikina
我可以在过滤数据时显示数据,但问题是当我选择
Marikina
Montalban
时,它也会显示第三个选项,即
Montalban/Marikina
的路线。 以下是使用select筛选表的jquery代码:

$(document).ready(function () {

        $('.filter').change(function () {
                var values = [];

                 $('.filter').each(function () {
                        var colIdx = $(this).data('col');

                         $(this).find('option:selected').each(function () {
                                 if ($(this).val() != "") values.push( {
                                        text: $(this).text(),
                                        colId : colIdx
                                 });
                        });
                });
                filter('table > tbody > tr', values);
        });

        function filter(selector, values) {console.log(values);
                $(selector).each(function () {
                        var sel = $(this);
                        var tokens = sel.text().trim().split('\n');
                        var toknesObj = [], i;
                        for(i=0;i<tokens.length;i++){
                                toknesObj[i] = {
                                     text:tokens[i].trim(), 
                                     found:false
                                };
                        }

                        var show = false;
                        //console.log(toknesObj);
                        $.each(values, function (i, val) {                

                     if (toknesObj[val.colId].text.search(new RegExp("\\b"+val.text+"\\b")) >= 0) {
                             toknesObj[val.colId].found = true;
                            }

                        });          
                        console.log(toknesObj);
                        var count = 0;
                         $.each(toknesObj, function (i, val) {
                                 if (val.found){
                                         count+=1;
                                 }
                         });
                        show = (count === values.length);        
                        show ? sel.show() : sel.hide();
        });
        var numOfVisibleRows =  $('#myTable tr:visible').length;
        var minus = numOfVisibleRows -1;
        document.getElementById("nor").innerHTML = minus;

        }
        const table = document.getElementById('myTable');
    const trs = table.querySelectorAll('tbody tr');
    const getAllDatesInTable = () => {
    const table = document.getElementById('myTable');
    const trs = table.querySelectorAll('tbody tr');
    const dates = [""];
    trs.forEach( tr => {
      const date = tr.querySelector('td:first-child').innerText;
      if (!dates.includes(date)) {
      dates.push(date);
      }
    });
  return dates;
};

    const dates = getAllDatesInTable();
    const select = document.getElementById('dateFilter');
    select.innerHTML = dates.map( d => `<option value=${d}>${d}</option>`);

});
$(文档).ready(函数(){
$('.filter').change(函数(){
var值=[];
$('.filter')。每个(函数(){
var colIdx=$(this).data('col');
$(this).find('option:selected')。每个(函数(){
if($(this.val()!=“”)值。推送({
text:$(this).text(),
科立德:科立德
});
});
});
过滤器('表>正文>tr',值);
});
函数过滤器(选择器,值){console.log(值);
$(选择器)。每个(函数(){
var sel=$(本);
var tokens=sel.text().trim().split('\n');
var toknesObj=[],i;
对于(i=0;i=0){
toknesObj[val.colId].found=true;
}
});          
控制台日志(toknesObj);
var计数=0;
$。每个(toknesObj,函数(i,val){
如果(找到值){
计数+=1;
}
});
显示=(计数==值.length);
show?sel.show():sel.hide();
});
var numovisiblerows=$(“#myTable tr:visible”).length;
var减号=numOfVisibleRows-1;
document.getElementById(“nor”).innerHTML=减号;
}
const table=document.getElementById('myTable');
const trs=table.queryselectoral('tbody tr');
常量getAllDatesInTable=()=>{
const table=document.getElementById('myTable');
const trs=table.queryselectoral('tbody tr');
常数日期=[“”];
trs.forEach(tr=>{
const date=tr.querySelector('td:first child')。innerText;
如果(!日期。包括(日期)){
日期。推送(日期);
}
});
返回日期;
};
const dates=getAllDatesInTable();
const select=document.getElementById('dateFilter');
select.innerHTML=dates.map(d=>`${d}`);
});
这是示例html表

我希望如果我只选择
Marikina
,它将只显示
Marikina
,而不是
Montalban/Marikina
。提前感谢您

只需删除正则表达式检查并使用normal
=
(等于)进行检查

$(文档).ready(函数(){
$('.filter').change(函数(){
var值=[];
$('.filter')。每个(函数(){
var colIdx=$(this).data('col');
$(this).find('option:selected')。每个(函数(){
if($(this.val()!=“”){
值。推({
text:$(this).text(),
科立德:科立德
});
}
});
});
过滤器('表>正文>tr',值);
});
函数过滤器(选择器、值){
console.log(值);
$(选择器)。每个(函数(){
var sel=$(本);
var tokens=sel.text().trim().split('\n');
var toknesObj=[],
我
对于(i=0;i=0){
toknesObj[val.colId].found=true;
}
});
控制台日志(toknesObj);
var计数=0;
$。每个(toknesObj,函数(i,val){
如果(找到值){
计数+=1;
}
});
显示=(计数==值.length);
show?sel.show():sel.hide();
});
var numovisiblerows=$(“#myTable tr:visible”).length;
var减号=numOfVisibleRows-1;
document.getElementById(“nor”).innerHTML=减号;
}
const table=document.getElementById('myTable');
const trs=table.queryselectoral('tbody tr');
常量getAllDatesInTable=()=>{
const table=document.getElementById('myTable');
const trs=table.queryselectoral('tbody tr');
常数日期=[“”];
trs.forEach(tr=>{
const date=tr.querySelector('td:first child')。innerText;
如果(!日期。包括(日期)){
日期。推送(日期);
}
});
返回日期;
};
const dates=getAllDatesInTable();
const select=document.getElementById('dateFilter');
select.innerHTML=dates.map(d=>`${d}`);
});
表格{
字体系列:arial,无衬线;
边界塌陷:塌陷;
宽度:100%;
}
运输署,
th{
边框:1px实心#dddddd;
文本对齐:左对齐;
填充:8px;
}
tr:n个孩子(偶数){
背景色:#dddddd;
}

路线
目的地
日期
玛丽基纳
古巴
05/08/2019
蒙塔尔班
莱特克斯
05/07/2019
玛丽基纳/蒙塔尔班
奎松市
05/10/2019

正则表达式验证解决了这个问题

if (toknesObj[val.colId].text.trim().search(new RegExp("^"+val.text.trim()+"$")) >= 0) {
  toknesObj[val.colId].found = true;
}

感谢您的回复,