Chciałem użyć sprawdzania poprawności formularza HTML5 wraz z wysyłaniem formularzy ajax. Po przesłaniu formularza należy go zastąpić inną treścią za pomocą prepend (), show () lub czegoś podobnego.
Sprawdzałem funkcje Submit () i validate () i wymyśliłem:
$("#form").submit(function(e){
e.preventDefault();
$.post("sendmail.php", { name: $("#form-field-name").val(), email: $("#form-field-email").val(), message: $("#form-field-message").val()} );
// now prepend the new "sucessfully sent" div
});
Wygląda jak e.preventDefault();
wyłącza sprawdzanie poprawności formularza w Operze, działa doskonale w Firefox / Chrome.
Jakieś pomysły? Czy to błąd jQuery / Opera, a może po raz kolejny Opera robi to dobrze, a reszta nie?
Przykład: http://jsfiddle.net/gw3My/
Odpowiedzi:
1 dla odpowiedzi № 1To wydaje się dziwactwem w Operze. Nie jestem pewien, która przeglądarka jest poprawna, ale ta strona wyjaśnia dziwactwo i sugeruje obejście za pomocą this.checkValidity()
. Dostosuj go do swoich potrzeb.
Według ta strona, to dziwactwo zostanie naprawione w Operze 12.
CORE-35849 Prześlij zdarzenie niepoprawnie uruchomione PRZED sprawdzeniem poprawności po stronie klienta w formularzach HTML5