AjaxForm JQuery отправляется по клику, но не по пробелу - PullRequest
2 голосов
/ 15 июля 2011

JQuery хорошо известный и любимый плагин ajaxForm изменяет форму для отправки ajax.

Я получил это, чтобы работать правильно, включая обратный вызовфункции.То, что я нашел сломанным, - то, что во многих случаях вместо того, чтобы нажать ввод, я нажимаю комбинацию tab space.Это полезно в случаях заполнения текстовых областей или просто потому, что это быстрее, чем тянуться к мышке.

В моей реализации нажатие кнопки «Отправить» работает, как и ожидалось, но нажатие на вкладку «пробел» - ничего не делает.Форма не отправляется, страница не обновляется.

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

Информация о браузере : Ubuntu 10.04FireFox 3.6.18 не работаетGoogle-Chrome 12.0.742.112 не работает

Windows 7Firefox 3.6.15 не работаетChrome 12.0.742.112 не работаетInternet Explorer 9.0.8080.16413 - работает как положено.

Ответы [ 3 ]

4 голосов
/ 19 июля 2011

Я могу придумать две возможные причины:

  1. Нажатие пробела на кнопке не вызывает действие / событие щелчка.
  2. Какой-то другой обработчик перехватывает щелчоксобытие.Например, убедитесь, что вы не используете ajaxSubmit и ajaxForm в одной форме.

Для 2 вы можете визуально проверить с помощью FireQuery , плагина для FF.

Для 1 вам может потребоваться перейти к собственному коду плагина, то есть jquery.form.js.В зависимости от того, какой метод вы используете для формы;если ajaxSubmit, установите точку останова вокруг линии 290 (doSubmit);если ajaxForm, в строках 589 и 594.

Надеюсь, это поможет вам в отладке ошибки.

Если вы узнали, что это первый случай, вам может понадобиться нажать клавишуобработчик для кнопки и имитация одинакового поведения в разных браузерах:

$('#submitButton').keypress(function(event) {
  if (event.which == 32)  // space bar pressed
    $(this).click();
});
1 голос
/ 19 июля 2011

Попробуйте добавить свой собственный обработчик кликов к кнопке отправки и добавить тестовое оповещение, чтобы увидеть, срабатывает ли оно.

Если это сработает, вы можете самостоятельно позвонить в форму.

0 голосов
/ 19 июля 2011

AFAIK, GTK + не вызывает нажатия на пробел.Кроме того, пробел обычно привязан к прокрутке страницы (большинством обозревателей), поэтому он может не вызывать щелчок по умолчанию.

Одно из исправлений - привязать keypress к документу и вручную вызвать click илиформа submit.

$(document).die('keypress.spacebar').live('keypress.spacebar', function() {
   // do nothing if not spacebar
   if(e.which != 32) { return; };

   var button = $('#mySubmitButton')[0];
   // check if submit button has focus. if not, return
   if(button !== document.activeElement) {
       return;
   }

   // else, go ahead and submit form
   $('#myform').submit();
   e.preventDefault();
});

Обратите внимание , что я использую событие namespaced, чтобы избежать любых конфликтов с любым другим обработчиком keypress в форме.

...