Параметр JQuery Hide of Select не работает в IE8 или IE11 - PullRequest
0 голосов
/ 29 октября 2019

У меня есть TextBox и кнопка, для которой я вызываю функцию Javascript, используя селектор JQuery, чтобы показать или скрыть данные в ListBox. Мой код работает нормально во всех других браузерах, кроме Internet Explorer. ПРИМЕЧАНИЕ: Я пытаюсь сделать это без использования цикла в моей функциональности.

$(window).load(function () {
$("#btnSearch").live("click", function () {
        SearchListBox();
    });
});
function SearchListBox() {
    if ($("input[id*='txtSearch']").val().length >= 3) {
        $("select[id*='ddl'] >option").hide();
        var srchKey = $("input[id*='txtSearch']").val();
        $("select[id*='ddl'] >option:contains('" + srchKey + "')").show();
    }
    else if ($("input[id*='txtSearch']").val().length === 0) {
        $("select[id*='ddl'] >option").show();
    }
    return false;
}
<table>
<tr>
                <td colspan="2">
                    <input type="text" id="txtSearch" title="Search with 3 or more characters" />
                    <div id='button-holder'>
                    <img src="../Images/Search.gif" id="btnSearch" />
                    </div>
                </td>
            </tr>
            <tr>
            <td>
                    <asp:ListBox ID="ddl" runat="server" AutoPostBack="false" Height="250px" Width="250px" SelectionMode="Multiple" />
                </td>
            </tr>
</table>

1 Ответ

0 голосов
/ 29 октября 2019

Я уверен, что данные вашего массива, которые заполняют выбор, откуда-то пришли. Работайте с циклом for для данных вашего массива, не работайте с html напрямую, создавайте фрагмент документа с вашими данными при каждом нажатии кнопки и удаляйте ваши параметры, а затем добавляйте этот фрагмент, содержащий отфильтрованные параметры, в ваш выбор

Некоторая идея, не совсем, но работает в каждом браузере, и использование фрагмента очень эффективно.

Ваш цикл for, через который данные будут вызывать функцию appendOptionToFragment

var fragment = document.createDocumentFragment();

function appendOptionToFragment(fragment, optionText, optionValue) {
    var opt = document.createElement("option");
    opt.innerHTML = optionText;
    opt.value = optionValue;
    fragment.appendChild(opt);
}


  $("#someSelect > option").remove();
     var select = document.getElementById("someSelect");
    select.appendChild(fragment);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...