2017-02-21 78 views
0

我创建了一个表,但不知何故现在能够过滤该行。它给我错误,因为不能读取属性拆分。这里是我的fiddle文件的链接。任何帮助都会很棒。提前致谢。表jQuery过滤器

$("#crudtable_filter").keyup(function() { 
    //split the current value of searchInput 
    var data = this.value.split(" "); 
    //create a jquery object of the rows 
    var jo = $("#crudtable").find("tr"); 
    if (this.value == "") { 
     jo.show(); 
     return; 
    } 
    //hide all the rows 
    jo.hide(); 

    //Recusively filter the jquery object to get results. 
    jo.filter(function (i, v) { 
     var $t = $(this); 
     for (var d = 0; d < data.length; ++d) { 
      if ($t.is(":contains('" + data[d] + "')")) { 
       return true; 
      } 
     } 
     return false; 
    }) 
    //show the rows that match. 
    .show(); 
}).focus(function() { 
    this.value = ""; 
    $(this).css({ 
     "color": "black" 
    }); 
    $(this).unbind('focus'); 
}).css({ 
    "color": "#C0C0C0" 
}); 
+0

你的'this.value.split(“”);'获取undefine值解决它并继续。 – RRajani

回答

3

工作小提琴:http://jsfiddle.net/sofqjbrg/3/

说明:

为了得到该起重工事件的元素的值,你需要使用$(event.target).val()

$(event.target)$(this)之间的差异,请参考Difference between $(this) and event.target?

PS:您的焦点事件登记到错误的元素。

+0

thanx,像魅力一样工作,但我只能看到我搜索的具体元素,如果我想看到所选单词的整个行,该怎么办? – Harshit

+0

@Harshit你可能希望通过隐藏所有tr excpet第一个来保留表头:'var jo = $(“#crudtable”)。find(“tr”)。not(“:eq(0)”); '。新的JsFiddle:http://jsfiddle.net/sofqjbrg/5/ – user3682091