Разбираем события
всем добра)
есть такой кусочек кода $('body').on('click','#btn_form', function(){ var status_action = $(this).attr("data-status_action"); //это переменная может принимать разные значения alert(status_action); $('#form').submit(function(e){ e.preventDefault();//запрет на стандартное событие e.stopImmediatePropagation();//это что бы при повторном нажатии события дважды не запускалась alert("Форма"); var data_form = $(this).serialize() + "&status_action=" + status_action; alert(data_form); return false; }); }); вопрос, почему при повторном инициализации 'click','#btn_form', , если призошла сменаstatus_action на другое значение, то тут уже data_form она не меняется... какие есть мыли? Заранее спасибо! |
Борьба с повторным отправлением формы? Вбросить это и обрабатывать событие onsubmit формы, блокируя кнопку submit до отправления, снимая блокировку после отправления.
|
Цитата:
Могли бы кусочек кода показать? |
Цитата:
Чего у вас делается то? |
Цитата:
<input type="hidden" name="ID" value="' . $ID . '"> <table> <tr><td width="100px"><p>Стол1:</p></td> <td><input name="name2" type="number"></td> </tr> <tr><td><p>Комм:</p></td> <td><input name="name3" type="text" value="" required></td> </tr> </table> <input id="btn_form" status_action="add" type="submit" value="Добавить"> <input class="btn_blue" id="btn_form" status_action="remove" type="submit" value="удалить"> </form> |
Тогда делегирование обработчика тегу body нужно только в том случае, если форма добавляется на страницу динамически и присутствует в ней постоянно. В противном случае делегирование не нужно.
Если же она добавляется динамически и по удачному отправлению удаляется, то выгоднее назначить обработчик ее отправления непосредственно при ее добавлении на страницу. А что у вас? |
Цитата:
|
Цитата:
У вас же кнопки отправления формы не имеют имен (а вот id имеют одно и тоже, что есть ошибка, id должно быть уникальным значением), значит на сервер они отправляться не будут. При этом ваши кнопки, судя по их значениям, определяют операцию на сервере, по крайней мере так можно предположить. И каким же образом сервер сможет узнать что ему делать, если кнопки эти не отправляются? А если они не определяют операцию на сервере, то зачем тогда их две? Что касается отправления, то вы так и не ответили на вопрос что же вам нужно. Пусть будет так - форма подгружается и после удачного отправления более не нужна, то есть она удаляется. Тогда выгоднее так: //здесь в неком сценарии, где происходит добавление формы на страницу //и условно считаем, что форма добавляется в слое в body из полученной переменной data $(data).appendTo('body') //вставили нечто с формой на страницу .find('form') //нашли форму .submit(function(e) { //устанавливаем обработчик отправления e.prevetDefault(); var form = $(this), //сохраним указатель на нее, если надо btn = form.find('[type=submit]').prop('disabled', 1); //делаем кнопки отправления недоступными //здесь ajax-запрос - отправляем форму, в методах success/error которого, если будут вовзращены ошибки //делаем кнопки отправления доступными вновь //если же ошибко нет, то форма просто удаляется }) |
спасибо!
|
Часовой пояс GMT +3, время: 05:46. |