Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите изменить фильтр текста чтобы он не учитывал символ (https://javascript.ru/forum/misc/74149-pomogite-izmenit-filtr-teksta-chtoby-ne-uchityval-simvol.html)

Artur_Hopf 18.06.2018 08:44

Помогите изменить фильтр текста чтобы он не учитывал символ
 
Добрый день. Есть функция поиска по таблице, которая просто находит совпадения и выдает результат:
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<input type="text" id="myInput" placeholder="Введите данные для поиска по таблице"></br></br>
<table class="table" id="table" border="1">
   <thead id ="myTableHead" >
            <tr>
                <th scope="col">ФИО</th>
                <th scope="col">Номер</th>
            </tr>
     </thead>
     <tbody id="myTable">
           <tr>
           <td class="text-center">ФИО</td>
           <td class="text-center">Человек. №1</td>
            </tr>
            <tr>
           <td class="text-center">ФИО</td>
           <td class="text-center">Человек №2</td>
           </tr>
     </tbody>
            </table>
<script>
$(document).ready(function(){
    filterTable();
});
function filterTable(){
    $("#myInput").on("keyup", function() {
        var value = $(this).val().toLowerCase();
        $("#myTable tr").filter(function() {
            $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
        });
    });
}
</script>


Нужно чтобы поиск не учитывал знаки [№] и [.] . Например в поиске можно просто ввести Человек 1 , и он бы нашел в таблице Человек. №1. То есть совпадения по пробелу оставить, а именно № и точку чтобы мог игнорить. Но если в поиске они введены то находил бы.:-?

ksa 18.06.2018 09:21

Цитата:

Сообщение от Artur_Hopf
Нужно чтобы поиск не учитывал знаки [№] и [.] . Например в поиске можно просто ввести Человек 1 , и он бы нашел в таблице Человек. №1. То есть совпадения по пробелу оставить, а именно № и точку чтобы мог игнорить.

Как вариант:
- анализировать строку поска
- находить там цифры и менять на
№?<цифра>\.?

- потом выполнять поиск в тексте

Т.е. делать нужное регулярное выражение, а потом им выполнять поиск.

рони 18.06.2018 11:57

Artur_Hopf,
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<input type="text" id="myInput" placeholder="Введите данные для поиска по таблице"></br></br>
<table class="table" id="table" border="1">
   <thead id ="myTableHead" >
            <tr>
                <th scope="col">ФИО</th>
                <th scope="col">Номер</th>
            </tr>
     </thead>
     <tbody id="myTable">
           <tr>
           <td class="text-center">ФИО</td>
           <td class="text-center">Человек. №1</td>
            </tr>
            <tr>
           <td class="text-center">ФИО</td>
           <td class="text-center">Человек №2</td>
           </tr>
     </tbody>
            </table>
<script>
$(function(){
    filterTable();
});
function filterTable(){
    $("#myInput").on("input", function() {
        var value = $(this).val().toLowerCase();
        value = value.replace(/\s+/g,"[\\s\\S]+?");
        value = new RegExp(value);
        $("#myTable tr").filter(function() {
          !value||$(this).toggle(value.test($(this).text().toLowerCase()));
        });
    });
}
</script>

Artur_Hopf 18.06.2018 16:47

Спасибо большое :thanks:


Часовой пояс GMT +3, время: 17:22.