5

Wobec jednego problemu z moim komponentem, którego nie mogę rozwiązać za pomocą React 15. Wszystko działa zgodnie z oczekiwaniami, z wyjątkiem IE 11.React nie blokuje przesyłania formularza w IE 11

Zasadniczo wygląda na to, że IE 11 ignoruje funkcję event.preventDefault() (i wszystkie skomentowane funkcje w poniższym kodzie, wypróbowane we wszystkich z nich) i przesyła dane . Strona zostanie ponownie załadowana, a parametry zapytania znajdują się w adresie URL. Chciałbym zapobiec ponownemu załadowaniu strony i wykonać tylko logikę w funkcji handleSubmit.

Postać w funkcji render:

<form onSubmit={this.handleSubmit}> 
    <input ref="email" type="email" name="username" required></input> 
    <input ref="pass" type="password" name="pass"required></input> 
    <input type="submit" name="login" value="Login" /> 
</form> 

i jest to funkcja hanleSubmit:

handleSubmit: function (event) { 

    event.preventDefault(); 
    //event.returnValue = false; 
    //event.stopPropagation(); 
    //event.nativeEvent.preventDefault(); 

    var email = this.refs.email.value; 
    var pass = this.refs.pass.value; 

    //return false; 
}, 
+0

Spróbuj zamienić 'event.preventDefault()' na 'event.preventDefault? event.preventDefault(): (event.returnValue = false); '. Wiem, że to dla> IE8, ale IE czasami jest niespodzianką. –

+0

Próbowałem tego, ale bez powodzenia. Dzięki i tak. – Gjoshevski

+0

@Gjoshevski znalazłeś rozwiązanie dla tego? –

Odpowiedz

0

Funkcja preventDefault() powinny działać prawidłowo w Internet Explorer 11, jednak mogą być skierowane inny problem w twoim skrypcie, który uruchamia błąd/ostrzeżenie, które powoduje, że nie można go wywołać preventDefault().

Polecam sprawdzenie konsoli przy użyciu F12 i sprawdzenie, czy są jakieś ostrzeżenia JS.