2014-09-22 6 views
1

У меня был этот фрагмент JavaScript на моем веб-сайте некоторое время. Его цель состоит в том, чтобы предотвратить двойные щелчки, немедленно очистив входной файл после отправки формы. Он работал нормально. Сегодня я протестировал его, и по какой-то причине Chrome отправляет пустую строку в виде файла, но Firefox сначала отправляет файл, а затем очищает его, как и ожидалось. Может ли кто-нибудь объяснить это поведение мне?Различные действия JavaScript в Chrome и Firefox для form.submit()

$('#uploadform').submit(function (e) { 
    if ($('#file').val().length == 0) { 
     return false; 
    } 
    e.preventDefault(); 
    this.submit(); 
    $('#file').val(''); 
}); 
+0

Как выглядит ваша функция 'submit'? –

+1

'Submit' может быть асинхронной функцией, что означает, что она может быть выполнена после того, как значение будет очищено. – levi

+0

@KeVin http://www.w3schools.com/jsref/met_form_submit.asp – Brewal

ответ

2

Похоже, вы испытываете состояние гонки, когда представление формы происходит после того, как значение было очищено. Такое поведение может быть разным в браузерах. Учитывая, что вы отправляете форму без ajax, форма будет удалена автоматически после перезагрузки страницы. Чтобы предотвратить множественные отправки, вы можете отключить кнопку отправки:

$("#submit-button").attr("disabled","disabled"); 
Смежные вопросы