Добавить пользовательские параметры, если в раскрывающемся списке начальной загрузки не найдено результатов (выбрать средство выбора) - PullRequest
0 голосов
/ 16 сентября 2018

Я использую начальный поиск выпадающий список , который работает нормально. Я хочу прикрепить / добавить несколько других опций к тому же выпадающему списку, если результат поиска показывает "нет совпадений результатов".

Вот код, который я использую для его привязки:

Это список выбора

   <select id="ddlselectPicker" onchange="return AppendData();" data-live-search="true"></select>

Я использую ajax для привязки этого предмета:

function AppendData()
{
var ddlCustomers = $("#ddlselectPicker");
        ddlCustomers.empty().append('<option selected="selected" value="0" disabled = "disabled">Loading.....</option>');
        $.ajax({
            type: "Get",
            url: $('#hfUrl').val(),
            data: '{}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (response) {
                ddlCustomers.empty().append('<option selected="selected" value="0">Select</option>');
                $.each(response, function () {
                    ddlCustomers.append($("<option></option>").val(this['Prckey']).html(this['Name']));


                });

            },
            failure: function (response) {
                alert(response.responseText);
            },
            error: function (response) {
                alert(response.responseText);
            }
        });
}

Он автоматически показывает мне «результатов не найдено», если я не получаю результаты типа и поиска. Но вместо этого мне нужно показать еще 3 варианта в том же выпадающем меню, в котором должно быть написано: 1) «Другие» 2) «Частный предприниматель», 3) «Свободный лансер»

Я пытаюсь это сделать, но не могу достичь:

 $(".dropdown-menu open >input").on('keydown', 'li.no-results', function () {
            $("#selectpicker")
                .append('<option>Others</option>')
                .append('<option>Self Employed</option>')
                .append('<option>Retired</option>')
                .selectpicker('refresh');
            //You can also call AJAX here to add the value in DB
        });

Пожалуйста, посмотрите на изображение, которое я получаю после того, как не получаю результатов enter image description here

Это то, что я пробовал, и которое добавляло новые опции на случай, если ничего не найдено, но теперь я не могу получить предыдущий фильтр

 $(".bs-searchbox >input").keyup(function () {
            debugger;
            var searchTerm = "";
            var ddlCustomers = $("#ddlselectPicker");
            var list = $(".dropdown-menu .inner li:eq(0)").text();
            debugger;
            if (list.indexOf("No results matched") != -1) {
                ddlCustomers.empty();
                ddlCustomers.append('<option value="Others">Others</option>');
                ddlCustomers.append('<option value="Self Employed">Self Employed</option>');
                ddlCustomers.append('<option value="Retired">Retired</option>');
                ddlCustomers.selectpicker('refresh');
            }
            else {

                 }
});

1 Ответ

0 голосов
/ 16 сентября 2018

мм .. если они всегда одинаковы, вы всегда можете добавить их и просто скрыть их с помощью CSS-дисплея none.

пример с ручкой

<select class="no-results">
<option value='Others'>Others</option>
<option value='Self Employed'>Self Employed</option>
<option value='Retired'>Retired</option>
</select>

<select class="with-results">
<option value='test'>Test1</option>
<option value='test'>Test2</option>
<option value='Others'>Others</option>
<option value='Self Employed'>Self Employed</option>
<option value='Retired'>Retired</option>
</select>

CSS

   select.with-results option[value='Others'],
select.with-results option[value='Self Employed'],
select.with-results option[value='Retired'] {
 display:none;
}
select.no-results  option[value='Others'],
select.no-results option[value='Self Employed'],
select.no-results option[value='Retired']{
 display:block;
}
...