2017-06-21 112 views
0

我使用jQuery腳本通過html表進行搜索,並隱藏與匹配的字符串不匹配的行。jQuery中的簡單搜索無法正常工作

但它有一些問題:
我有字符串「Kable我przewody」的一些元素和我的搜索工作是否正常,當我在字符串中使用字符串用一個字母或開頭的單詞,即:「嘉」, 'prze'等

但它不適用於某些使用單詞中間字母的字符串: 'able','rze','ody'。

這這裏是我的代碼,請大家幫忙:

var query = getUrlParameter('q'); 


var $rows = $('.tabelapatrnerzy tr'); 
$('#szukaj').click(function() { 

    var val = '^(?=.*\\b' + $.trim($('#wpisywane').val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', 
     reg = RegExp(val, 'i'), 
     text; 

    $rows.show().filter(function() { 
     text = $(this).text().replace(/\s+/g, ' ', /ą/i, '', /ź/i, 'z', /ż/i, 'z',/ó/i ,'o', /ł/i, 'l', /ń/i, 'n', /ć/i, 'c', /ę/i, 'e', /ś/i, 's'); 
     return !reg.test(text); 
    }).hide(); 
}); 
if (query) { 
    var val = '^(?=.*\\b' + $.trim(query).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', 
     reg = RegExp(val, 'i'), 
     text; 

    $rows.show().filter(function() { 
     text = $(this).text().replace(/\s+/g, ' ', /ą/i, '', /ź/i, 'z', /ż/i, 'z',/ó/i ,'o', /ł/i, 'l', /ń/i, 'n', /ć/i, 'c', /ę/i, 'e', /ś/i, 's'); 
     return !reg.test(text); 
    }).hide(); 
} 
+0

如果您需要單詞匹配,請刪除單詞邊界'\\ b's。 –

+0

就是這樣,謝謝。我必須更多地瞭解js中的正則表達式。請製作禮物,以便我可以將其標記爲正確。 – Aksebkit

回答

0

\b圖案的位置在單詞邊界匹配。

要允許in-word匹配,只需刪除模式中的所有\\b即可。

+0

你也知道如何使用輸入字符串中的空格進行搜索嗎? – Aksebkit

+0

然後不要用'/ \ s + /'正則表達式分割字符串。 –