Не удается получить значение из текстового поля в IE при запуске функции с помощью ключевого события - PullRequest
1 голос
/ 16 октября 2019

У меня есть окно поиска на моем сайте, которое можно использовать, нажав кнопку поиска или нажав клавишу ввода, когда поле поиска находится в фокусе. Проблема, с которой я сталкиваюсь , возникает только в Internet Explorer (которую я, к сожалению, должен поддерживать).

При нажатии на кнопку, чтобы выполнить поиск, все работает как запланировано. Однако при нажатии Enter я получаю странное поведение. При отладке javascript, я вижу, что поисковый запрос пуст. Вот весь javascript, который я использую, нажав кнопку и нажав ввод, оба используют одну и ту же функцию поиска.

$(document).ready(function () {
    var input = document.getElementById("txtSearch");
    if (input) {
        input.addEventListener("keyup", function (event) {
            //if the user hits enter
            if (event.keyCode == 70) {
                event.preventDefault();
                search();
            }
        });
    }
})


function search() {
    var searchstring = $('#txtSearch').dxTextBox('instance').option('value');
    //only search if there is a value in the text box
    if (searchstring != "") {         
        var url = window.location.origin + "/Search" + "?searchquery=" + encodeURIComponent(searchstring);
        window.location.href = url;
    }
}

Первая строка в функции поиска - это проблема. После нажатия Enter функция запускается, и строка поиска устанавливается в пустую строку, а не в текстовое поле.

1 Ответ

1 голос
/ 16 октября 2019

У вас уже есть событие в вашем eventListener. Я бы порекомендовал вам просто передать event.target.value в вашу функцию поиска. Это делает его более функциональным. Наличие функции, которая получает свою собственную информацию, является плохим паттерном.

Подводя итог:

  1. Получить значение из вашего события: event.target.value
  2. Передать это для поиска в качестве аргумента
  3. Использоватьаргумент в вашей функции вместо получения строки поиска
...