Какой контент вне формы может нарушить неявную отправку формы (клавиша Enter)? - PullRequest
0 голосов
/ 02 мая 2019

Я добавил эту простую форму поиска в область меню веб-приложения базы данных:

<form action='list.php'>
  <input name='textinput1' placeholder='"._('(quick search)')."' style='width:7em'>
  <input type='hidden' name='texttarget1' value='Name'>
</form>

Это работает на большинстве страниц, но на двух страницах нажатие Enter ничего не делает. Вы можете попробовать это в https://missiondemo.kizunadb.com (пустой демонстрационный экземпляр) - войдите с помощью "demo" / "demo". Две страницы, на которые не будет отправлена ​​форма поиска в строке меню, - «Новый человек / организация» (большая форма редактирования) и «Настройки БД» (куча маленьких форм и кусочков AJAX).

Форма поиска одинакова на всех страницах, так что, очевидно, что-то еще на этих страницах влияет на поведение формы поиска, настолько маловероятно, как мне кажется. Любые идеи о том, что можно сделать, и что с этим делать?

1 Ответ

1 голос
/ 02 мая 2019

Это следующие строки:

function stopRKey(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
}
document.onkeypress = stopRKey;

Вы прослушиваете все нажатия клавиш и возвращаете false, если keyCode равен 13 (Enter), что предотвращает поведение по умолчанию, в данном случае отправляя форму

И важная часть, как я нашел проблему:

  • Пошел на страницу, которая работала, и открыл Chrome DevTools
  • На вкладке Элементы, выберите входelement
  • Посмотрел вкладку «Прослушиватели событий», увидел, что ничего не было связано с событиями клавиатуры
  • Зашел на одну из сломанных страниц и повторил процесс
  • На этот разна вкладке «Прослушиватели событий» увидели, что прослушивателей событий намного больше, в том числе один для keypress
  • Разверните прослушиватель keypress, и вы увидите, что прослушиватель подключен к document ион сообщает вам файл и номер строки кода, связанного со слушателем.
...