jQuery отключает отправку — И публикует значение?

#php #jquery #forms

#php #jquery #формы

Вопрос:

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

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

Редактировать:

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

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

Ответ №1:

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

 $('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:

При отправке формы установите для переменной типа isSubmitting значение true. Если пользователь снова нажмет отправить (либо с помощью кнопки, либо нажав enter, пока форма активна), она не будет отправлена, потому что вы проверяете эту переменную.

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

Комментарии:

1. Вы можете объединить это с установкой непрозрачности кнопки на .5 или что-то еще, чтобы указать, что ее нельзя использовать.

Ответ №3:

 $('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

Комментарии:

1. @swf: тогда, я полагаю, у вас есть какие-то другие проблемы

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

3. @king: на самом деле он отправляет для меня. Может быть, потому, что я использую <button type="submit"> ?

4. Это может быть, я не пробовал это точно, но я знаю, что другие типы ввода (флажок и т.д.) Не будут отправляться, если они отключены.