2013-11-26 62 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它不工作時我想搜索一個人。還有樂隊名字披頭士樂隊。比如「John beatles」 – Vincent

+0

@Vincent如果你搜索「John Beatles」,它會顯示所有的行爲「Beatles」出現在所有行中http://jsfiddle.net/arunpjohny/D6nzC/15/ –

回答

1

試試這個

問題是在你的正則表達式.replace(/\s+/, '|')

替換此.replace(/\s+/, '|').replace(/ /g,"|")

固定小提琴:Demo

Replacing spaces with underscores in JavaScript?

編輯:忘了更新的演示....現在我更新

+0

這個怎麼樣? http://jsfiddle.net/wind_chime18/ANLgD/8/ 與所有相同的樂隊名稱。披頭士,但如果我搜索「約翰starr披頭士」 – Vincent

+0

「如果我搜索」約翰starr披頭士「」,好吧,繼續... – leaf

+0

結果應該是2行 – Vincent

3

您更換給出:/lennon|753 tj/i。使用全局標誌:

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

而且,不要忘了修正輸入( 「儂」 目前給出/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

如果我有更多的列包含所有披頭士怎麼辦。我想搜索保羅披頭士。結果應該只有保羅麥卡特尼 – Vincent

+0

「結果應該是他們兩個」,爲什麼這句話不適用於樂隊? – leaf

+0

因爲。如果.....我擁有相同的姓氏和名字,但不同的樂隊名稱 – Vincent

相關問題