Как я могу предотвратить отправку веб-формы на «Enter» - PullRequest
2 голосов
/ 10 ноября 2008

У меня есть текстовое поле с опережением ввода текста, и когда пользователь нажимает «Enter», я хочу сделать ajax-вызов и не отправлять форму одновременно. Мой HTML выглядит так:

<input id="drug_name" class="drugs_field" type="text" size="30" onkeypress="handleKeyPress(event,this.form); return false;" name="drug[name]" autocomplete="off"/>
<div id="drug_name_auto_complete" class="auto_complete" style="display: none;"/>
<script type="text/javascript">
  //<![CDATA[
  var drug_name_auto_completer = new Ajax.Autocompleter('drug_name', 'drug_name_auto_complete', '/sfc/pharmacy/auto_complete_for_drug_name', {})
  //]]>
</script>

Ответы [ 4 ]

6 голосов
/ 10 ноября 2008

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

<form onsubmit="return someFunction();">

И затем убедитесь, что ваш someFunction () возвращает false в случае успеха. Если он вернет true, форма будет отправлена ​​в обычном режиме (это то, что вы пытаетесь предотвратить!). Таким образом, вы можете сделать свой AJAX-вызов, посмотреть, успешно ли он выполнен, и вернуть false.

Делая это таким образом, вы можете предоставить запасной вариант в случае сбоя вызова AJAX и отправить форму в обычном порядке, возвращая true из вашей функции.

2 голосов
/ 10 ноября 2008

Перехватите событие и отмените его.

Это что-то вроде trap onSubmit (event) и event.ignoreDefault (). Событие может сказать вам, что оно было вызвано нажатием клавиши, и которое.

1 голос
/ 10 ноября 2008

в элементе ввода для кнопки do:

<input type='submit' value='submit' onclick='submiFunction(); return false;'>

или в самой форме

<form blabla onsubmit='someAjaxCall(); return false;'>

Что должно помешать отправке формы.
return false - это действие, которое фактически останавливает отправку формы (отменяет текущее событие, которое является sbumit)

1 голос
/ 10 ноября 2008

Вы можете использовать обычную кнопку, которая отправляет форму при нажатии вместо кнопки отправки.

Если вы хотите, чтобы ключ ввода работал в других полях, просто обработайте его там и отправьте форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...