2013-11-26 4 views
2

У меня есть код для поиска нескольких слов в таблице, но он еще не идеален. Что делать, если я ввел эти несколько слов не в порядок? например, «John Lennon 151 sf» и «paul mccartney 753 tj», и я напечатал слово «lennon 753 tj», результатом должно быть два из них. но результат, который я получил это строка только Джоне Ленноне ..как найти в таблице все возможные результаты jquery

вот мой код

<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/

+1

Я думаю, что она была решена в вашем предыдущем посте сам http://jsfiddle.net/arunpjohny/D6nzC/10/ –

+1

@arun это не работает, когда Я хочу найти одного человека. а также название группы beatles. например, «John beatles» – Vincent

+0

@ Vincent, если вы ищете «John Beatles», он отобразит все строки, поскольку «Битлз» присутствует во всех них: http://jsfiddle.net/arunpjohny/D6nzC/15/ –

ответ

1

Попробуйте

Проблема в своем регулярном выражении .replace(/\s+/, '|')

Заменить этот .replace(/\s+/, '|') этим .replace(/ /g,"|")

Fixed скрипкой: Demo

Replacing spaces with underscores in JavaScript?

Edit: Забыла обновить демо .... Теперь я обновил

+0

как об этом ? http://jsfiddle.net/wind_chime18/ANLgD/8/ с тем же названием группы. но если я обыскал «john starr beatles» – Vincent

+0

«если бы я искал« john starr beatles »«, ну, продолжайте ... – leaf

+0

результат должен быть 2 строки – Vincent

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, '|')) 
+0

Что делать, если у меня больше столбцов, содержащих все битлы. Я хочу поискать paul beatles. результат должен быть только paul mccartney – Vincent

+0

«результатом должно быть два из них», почему это предложение не должно относиться к группе? – leaf

+0

т.к.. что, если ..... у меня такое же имя и фамилия, но другое название группы – Vincent

Смежные вопросы