Как заблокировать отправку формы при нажатии клавиши ввода или возврата? - PullRequest
3 голосов
/ 16 сентября 2009

У меня есть форма, в которой я использую JQuery, не думаю, что мне нужно помещать код в этот пост, вопрос довольно простой.

Но я бы хотел заблокировать отправку формы, когда люди нажимают клавишу ввода или клавишу возврата.

В то же время у меня есть текстовые области, где пользователь должен иметь возможность нажимать клавиши ввода / возврата.

Ответы [ 4 ]

4 голосов
/ 16 сентября 2009

Быстрый и неприятный хак, но, как правило, более надежный, чем попытка заблокировать нажатия клавиш в каждой области: add:

<input type="submit" onclick="return false;" />

вверху формы. Первая отправка в форме действует как кнопка по умолчанию, когда в текущих браузерах нажимается Enter, поэтому, стерилизуя ее, вы предотвращаете появление Enter-отправки.

Затем используйте CSS, чтобы скрыть и / или переместить кнопку, чтобы ее не было видно.

Это не всегда хорошая идея, чтобы заблокировать Enter-представления, хотя; это стандартный способ работы браузера, и некоторые пользователи действительно хотят этого.

0 голосов
/ 16 сентября 2009

Вы можете попробовать это

jQuery(document).ready(function(){
   validSubmit = false;
})

jQuery('myForm textarea').keypress(function(e) {
   if (e.which == 13) {
      validSubmit = true; // if the pressed key is enter, then allow submissions
   }
})

jQuery('myForm').submit(function(){
   if (!validSubmit) {
      return false;  //if submitting the form is not allowed, then cancel submission
   }
})

Это отменяет все представления, если только не нажата клавиша ввода / возврата на текстовой области. Если вы используете кнопку, вам тоже нужно добавить к ней функцию.

jQuery('form button.validSubmit').click(function(){  //or 'form input[type="submit"]'
   validSubmission = true;
})
0 голосов
/ 16 сентября 2009

Не могли бы вы добавить в форму атрибут onsubmit, а затем проверить, был ли он отправлен с помощью клавиши ввода?

0 голосов
/ 16 сентября 2009

установить флаг на уровне документа, submitform = false; проверить представления против этого. изменить флаг в обработчике onclick кнопки отправки.

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