Почкму 2 раза происходит отправка формы?
$(function(){ $('#my_form').on('submit', function(e){ e.preventDefault(); var $that = $(this), formData = new FormData($that.get(0)); formData.append('date_upl', new Date()); // добавляем данные, не относящиеся к форме. У нас - это дата $.ajax({ url: $that.attr('action'), type: $that.attr('method'), contentType: false, processData: false, data: formData, dataType: 'json', success: function(json){ if(json){ $that.replaceWith(json); } } }); }); var uploadButton = $('<button/>') .addClass('btn btn-primary') .text('Processing...') .on('click', function () { $('#my_form').submit(); }) ; function tstFile(val){ var reg =new RegExp("^text/xml|x-json"); var tst = val.match(reg); if (tst){ return true; } return false; } $('#fileupload').change(function(e){ var file=e.currentTarget.value var type=e.currentTarget.files[0].type var type_text=type==='text/xml'?'to JSON':'to XML' if(tstFile(type)){ uploadButton.text(type_text) var node = $('<p/>') .append($('<span class=""/>').text(file)) .append(uploadButton.clone(true)); node.appendTo('#table_btn'); } }) }); |
imedia,
1. Я бы не стал ставить кнопку submit в форму, а поставил бы <button id="sub" type="button">Отправить</button> И поставил бы вместо .on('submit', function(e){ $('#sub').click(function(){ 2. Достаточно часты попытки нажать кнопку(submit или button) несколько раз, - ставить на данное событие флаг и проверять на входе события - если установлен - проваливаемся в return; Если нет - устанавливаем флаг и отправляем аяксом, далее добавляем функцию завершения отправки Аяксом, где и сбрасываем флаг(можно с секундной задержкой, дабы наверняка два раза не кликали, 3. При отправки аяксом выводить гифку работы uloads и удалять по завершении Аякса и сбросу флага ================== Нафига вот эта фигня ? Цитата:
var busy = false function ajaxFormSubmit(){ if(busy) return false; busy = true; var $that = $('#my_form'), formData = new FormData($that.get(0)); formData.append('date_upl', new Date()); // добавляем данные, не относящиеся к форме. У нас - это дата $.ajax({ url: $that.attr('action'), type: $that.attr('method'), contentType: false, processData: false, data: formData, dataType: 'json', success: function(json){ if(json){ $that.replaceWith(json); } setTimeout(function(){busy = false;},1000); } }); } |
да, спасибо
|
Часовой пояс GMT +3, время: 06:23. |