Przesyłam formularz i chcę uniemożliwić przesłanie, dopóki nie wykonam kilku innych czynności, takich jak wyświetlanie paska postępu podczas przesyłania plików. Ustawiam ten kod na podstawie pytań SO, takich jak event.preventDefault() function not working in IE.event.preventDefault w IE 10
$(document).ready(function(){
$("#fileform").submit(function(e){
if(!e) e = window.event;
if (e.preventDefault){
// Firefox, Chrome
e.preventDefault();
}else{
// Internet Explorer
e.returnValue = false;
}
// other code
}
}
Wszystko działa poprawnie w przeglądarkach Firefox i Chrome; akcja wysyłania zostanie zablokowana, pojawi się pasek postępu, a następnie formularz zostanie przesłany, gdy go powiadomię. Jednak w IE 10 pierwszy warunek instrukcji if jest wykonywany, a formularz wydaje się próbować przesłać (wyświetlane są bańki IE 10). Dlaczego pierwszy warunek jest wykonywany?
Czy IE 10 obsługuje preventDefault(), gdzie IE 8 i 9 nie? Jeśli tak, to w jaki sposób poprawnie obsłużyć zapobieganie wysyłaniu formularza w IE 8, 9, 10, które nie będzie kolidowało z Firefoksem, Chrome, Safari itp.?
Kiedy używam tego kodu, nic się nie zmienia. Firefox i Chrome nadal działają dobrze, ale mój pasek postępu nie pojawia się w IE (pojawia się formularz IE, gdy pojawiają się bąbelki). –
Nieważne, masz rację. Zdarzenie jest znormalizowane w jQuery, a e.preventDefault() działa zgodnie z oczekiwaniami. Dzięki. –