如何在表中找到所有可能的结果jquery

时间:2013-11-26 06:33:13

标签: javascript jquery

我有一个代码可以在表中查找多个单词,但它还不完美。 如果我输入的那些多个单词不按顺序怎么办?例如“John Lennon 151 sf” 和“paul mccartney 753 tj”和我输入“lennon 753 tj”这个词的结果应该是他们两个。但我收到的结果只是约翰·列侬的一排......

这是我的代码

<input id="emp_search" />
<input id="search" type="button" value="search" />
<table>
   <tr>
       <th>First Name</th>
       <th>Last Name</th>
       <th>number</th>
       <th>letters</th>
   </tr>
   <tr>
       <td>John</td>
       <td>Lennon</td>
       <td>151</td>
       <td>sf</td>
   </tr>
   <tr>
       <td>Paul</td>
       <td>McCartney</td>
       <td>753</td>
       <td>tj</td>
   </tr>
   <tr>
       <td>George</td>
       <td>Harrison</td>
       <td>24</td>
       <td>ge</td>
   </tr>
   <tr>
       <td>Ringo</td>
       <td>Starr</td>
       <td>26</td>
       <td>hg</td>
   </tr>
</table>

这里是..

if (!RegExp.escape) {
    RegExp.escape = function (s) {
        return s.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
    };
}
jQuery(function ($) {
    ///search this table
    $(' #search ').click(function () {
        var searchthis = new RegExp($(' #emp_search ').val().replace(/\s+/, '|'), 'i');
        $("table").find("tr").slice(1).each(function (index) {
            var text = $.trim($(this).text());
            $(this).toggle(searchthis.test(text));
        });
    });
});

我将添加到我的jquery中?提前谢谢:)

http://jsfiddle.net/wind_chime18/ANLgD/5/

2 个答案:

答案 0 :(得分:3)

您的替换为:/lennon|753 tj/i。使用全局标志:

$('#emp_search').val().replace(/\s+/g, '|')

此外,不要忘记修剪输入(“lennon”目前给出/lennon|/i):

$.trim($('#emp_search').val()).replace(/\s+/g, '|')

这是一个实际可行的演示:http://jsfiddle.net/wared/93jEY/

最后,您忘记使用escape

RegExp.escape($.trim($('#emp_search').val()).replace(/\s+/g, '|'))

答案 1 :(得分:1)

试试这个

问题出在您的正则表达式.replace(/\s+/, '|')

将此.replace(/\s+/, '|')替换为.replace(/ /g,"|")

修正小提琴:Demo

Replacing spaces with underscores in JavaScript?

修改:忘记更新演示....现在我更新了