Как сделать точный запрос поиска в таблицах данных? - PullRequest
3 голосов
/ 30 апреля 2020

Я создал скрипт для поиска по заданным фильтрам. Все работает нормально, кроме мужской / женский поиск, потому что слово женский содержит слово мужской . Выбор мужчины также дает мне результаты для женщин.

Я пытался добавить '\ b' и '\ s' до и после выбора пола в JS, как с одинарной, так и с двойной косой чертой. Вот код ниже:

<div id="filters">
    <h2>Filter Tables By</h2>
    Topic:
    <select id="topic_group" onchange="createSearchString();">
        <option></option>
        <option>Cancer</option>
        <option>Smoking</option>
        <option>Vaccinations</option>
        <option>Health Screenings</option>
        <option>Usual Place of Health  Care</option>
    </select>
    Population of interest (Total, Male, Female):
    <select id="popinterest_group" onchange="createSearchString();">
        <option></option>
        <option>Total</option>
        <option>Male</option>
        <option>Female</option>
    </select>
</div>

<script src="/TemplatePackage/3.0/js/libs/jquery-datatables/jquery.dataTables.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#example').dataTable({
            sDom:'<"nhis_search"f>t<"nhis_length"l> <"nhis_pagination"ip>',
            aaSorting: [],
            oLanguage: { sSearch: 'Additional search terms:' },
        });
    });

    var searchString = new String();

    function createSearchString() {
        searchString = $('#topic_group').val() + ' ' + $('#popinterest_group').val() + ' ' + $('#outcomes_group').val();
        $('#example_filter').find('input').val(searchString);
        $('#example_filter').find('input').trigger('keyup');
    }
</script>

1 Ответ

1 голос
/ 30 апреля 2020

Просто добавьте значение в опцию фильтра и затем отметьте опцию selected , когда onchange , затем используйте фильтр данных для фильтрации данных на основе столбцов и * 1007. * filter

Примечание. Не используйте метод search () , если ваша цель - фильтровать данные с использованием точного значения

<div id="filters">
    <h2>Filter Tables By</h2>
    Topic:
    <select id="topic_group" onchange="createSearchString();">
        <option></option>
        <option>Cancer</option>
        <option>Smoking</option>
        <option>Vaccinations</option>
        <option>Health Screenings</option>
        <option>Usual Place of Health  Care</option>
    </select>
    Population of interest (Total, Male, Female):
    <select id="popinterest_group" onchange="createSearchString();">
        <option></option>
        <option>Total</option>
        <option value="0">Male</option>
        <option value="1">Female</option>
    </select>
</div>

<script src="/TemplatePackage/3.0/js/libs/jquery-datatables/jquery.dataTables.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        var table = $('#example').dataTable({
            sDom:'<"nhis_search"f>t<"nhis_length"l> <"nhis_pagination"ip>',
            aaSorting: [],
            oLanguage: { sSearch: 'Additional search terms:' },
        });
    });

    function createSearchString() {
        var gender = $('#popinterest_group').children("option:selected").val(); // get the option value
        var filteredData = table
           .column( 0 ) // index of column
           .data()
           .filter( function ( value, index ) {
               if (gender == 0) return value == "male"
               else if (gender == 1) return value == "female"
               return value
           } );
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...