XPages - событие onkeypress не вызывает щелчок должным образом - PullRequest
5 голосов
/ 05 февраля 2012

Я создал поле поиска (id: searchField) и кнопку поиска (id: searchButton) с помощью пользовательских элементов управления Xpages. Я добавил событие onkeypress в поле поиска так, чтобы оно вызывало щелчок на кнопке searchButton. SearchButton перезагрузит страницу, но с параметрами URL, поступающими из поля поиска. Проблема в том, что страница перезагружается, но параметры поиска не добавляются в URL , когда я нажимаю ENTER в поле поиска , но работают правильно, когда я нажимаю searchButton. Вот коды, которые я использовал:

(код добавлен к нажатию клавиши searchField)

if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; }
if (thisEvent.keyCode == 13)
{
    document.getElementById("#{id:searchButton}").click();
}

(код добавлен на кнопку поиска)

window.location.href = "test.xsp?search=" + document.getElementById("#{id:searchField}").value;

Я тестировал его в IE и Firefox, у обоих проблемы. Я создал образец HTML-файла, и он работал правильно. Это ошибка XPages или я что-то здесь упускаю?

Ответы [ 4 ]

7 голосов
/ 05 февраля 2012

Добавьте это после вашего '.click ()':

       thisEvent.preventDefault();
       thisEvent.stopPropagation(); 

Это должно решить проблему; -)

6 голосов
/ 06 февраля 2012

Изменение события onKeyPress поля ввода на

if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; }
if (thisEvent.keyCode == dojo.keys.ENTER)
{
    dojo.byId("#{id:searchButton}").click();
    thisEvent.preventDefault();
}

должно быть достаточно для решения проблемы. Обратите внимание, что для кросс-браузерной совместимости я использовал

dojo.keys.ENTER

и

dojo.byId("id");

свойство / метод. У объекта dojo.keys гораздо больше свойств для проверки определенных нажатий клавиш: см. здесь

Mark

0 голосов
/ 25 февраля 2012

Проблема с идентификатором, сгенерированным xpage. У меня была такая же проблема. Префикс xPages - идентификатор пользовательского элемента управления, например view: _id1: _id ... Попробуйте указать полный идентификатор

0 голосов
/ 05 февраля 2012

Я сделал это совсем недавно в XPage, и следующий скрипт работает для меня кросс-браузер:

var e = arguments[0] || window.event;
if ( e.keyCode==13 || e.which==13) {
  window.location.href = 'searchResults.xsp?query=' + 
      encodeURI(dojo.byId('#{id:searchInput}').value));
  return false;
}

Надеюсь, это поможет,

Джереми

...