Событие нажатия кнопки поиска

#firefox #firefox-addon #xul

#firefox #firefox-аддон #xul

Вопрос:

Когда я нажимаю enter, он отлично работает. Однако я также хочу выполнить поиск, нажав кнопку поиска в текстовом поле. Я добавил oncommand атрибут, он выполнил поиск, однако после завершения поиска кнопка поиска превратилась в крест. Я щелкнул крестиком, он снова выполнил поиск. Я проверил документацию, однако не смог найти никакой информации о том, как связать мое нажатие кнопки поиска с событием поиска.

     <textbox id="txt1" type="search" searchbutton="true" editable="true"
    onkeypress="keyHandler(event);" />
  

Комментарии:

1. Вы можете выполнить это многими способами!! пожалуйста, опубликуйте свой сценарий.

Ответ №1:

Первое примечание: не обрабатывайте клики или нажатия клавиш напрямую, всегда используйте command событие — это гарантирует, что поведение элемента соответствует ожиданиям пользователя.

<textbox type="search"> предполагается, что выполнение одного и того же поиска дважды не имеет смысла. Итак, после выполнения поиска кнопка поиска превращается в крест, нажатие на этот крест очищает текст поиска (и, конечно, запускает новое command событие). Если вместо нажатия крестика вы измените текст поиска, вы снова получите обычную кнопку поиска. Таким образом, ваш command обработчик должен просмотреть текст поиска: показать результаты по умолчанию, если текст пуст (текст поиска очищается вручную или нажатием крестика) и выполнить новый поиск, если текст непустой.

Комментарии:

1. Это тот ответ, который мне был нужен, однако я не могу связать command с searchbutton .

2. @Ghokun: Вам не нужно, command событие для <textbox> элемента будет инициировано автоматически для всех соответствующих случаев, включая нажатие пользователем кнопки поиска.

3. Я проверил еще раз, searchbutton запускает команду, но я не получаю соответствующих результатов. Я думаю, моя функция поиска нуждается в некоторой настройке. Спасибо.

Ответ №2:

Это решение может не соответствовать вашей проблеме, но это даст представление о завершении вашей задачи.

Текстовое поле XUL:

 <textbox id="textbox" type="search" oncommand="SearchKeyword(this)"/>
  

Js:

 function SearchKeyword(oElem) // Function for search for the characters
        {
         var filter = document.getElementById("textbox");
         filter.setAttribute("value", oElem.value);
         document.getElementById("myTodoListTree").builder.rebuild();
      }