Отключить jQuery Отправить - И Опубликовать значение - PullRequest
2 голосов
/ 08 июня 2011

Я использую метод отключения отправки jQuery, чтобы предотвратить двойные публикации данных моей формы. НО я также хочу, чтобы значение кнопки отправки было опубликовано, что предотвращает этот метод. Есть ли способ обойти это? Некоторые из моих форм имеют несколько кнопок отправки, которые определяют, как обрабатываются данные публикации. Идеи?

$('form').submit(function(){
     $(this).find('input[type="submit"]').attr('disabled',true);
});

EDIT:

Этот метод подсчета рекомендован, но, похоже, не работает для блокировки отправок.

var i=0;
$('form').submit(function(){
     //$(this).find('input[type="submit"]').attr('disabled',true);
     i++;
     if(i>1){return false;}
});

Ответы [ 3 ]

3 голосов
/ 09 июня 2011

Это может быть слегка запутанным, но, похоже, работает. Создайте скрытый ввод на лету, который будет иметь то же имя и значение, что и кнопка отправки, которую вы только что нажали:

$('input[type="submit"]').click(function(){
   var thisname = $(this).attr('name');
   var thisval = $(this).val();
   $('<input>').attr({
    type: 'hidden',
    name: thisname,
    value: thisval
   }).appendTo('form');

});

$('form').submit(function(){
  $(this).find('input[type="submit"]').attr('disabled',true);
});
2 голосов
/ 08 июня 2011

При отправке формы установите переменную типа isSubmitting в true. Если пользователь снова нажимает кнопку «Отправить» (либо с помощью кнопки, либо нажав клавишу ввода, когда форма активна), он не будет отправлен, поскольку вы проверили эту переменную.

Обратите внимание, что это лучше, чем просто отключить кнопку, поскольку существует более одного способа дважды опубликовать форму.

0 голосов
/ 08 июня 2011
$('form').submit(function(){
     $(this).find('input[type="submit"]').attr('disabled',true);
     return true;
});

На самом деле это должно работать. Как и здесь объяснено: http://jquery -howto.blogspot.com / 2009/05 / disable-submit-button-on-form-submit.html

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