Zazwyczaj sprawdzanie poprawności formularza HTML5 uruchamia przed zdarzenie submit
.Jak uruchomić RECaptcha TYLKO po przejściu sprawdzania poprawności HTML5?
Dzięki tej
<form id="myForm">
<input type="text" name="foo" required />
<button type="submit"> Submit </button>
</form>
<script>
$("#myForm").on('submit',function(){
console.log("I'm entering the submit event handler");
});
</script>
jeśli pole wejściowe jest pusty, złożyć obsługi zdarzenia nie działa. Zostanie wyzwolony tylko wtedy, gdy minęło sprawdzanie poprawności HTML5 (w tym przypadku atrybut required
).
Spodziewałbym się, że captcha uruchomi także po również walidację HTML5; dlaczego muszę denerwować użytkownika, który kompiluje captcha, jeśli później ostrzec go, że brakuje pól? Najpierw Powinienem zmusić użytkownika do zrobienia wszystkiego we właściwy sposób, następnie upewnić się, że to człowiek, a nie bot, IMHO.
Wygląda na to, że reCaptcha robi coś w formularzu, na którym się znajduje, usuwając funkcję sprawdzania poprawności HTML5.
Na przykład, przy użyciu najnowszej Invisible reCaptcha:
<form id="myForm">
<input type="text" name="foo" required />
<button type="submit"
class="g-recaptcha"
data-sitekey="your_site_key"
data-callback='myCallback'> Submit </button>
</form>
<script>
function myCallback(token){
$("#myForm").submit();
}
$("#myForm").on('submit',function(){
console.log("I'm entering the submit event handler");
});
</script>
Formularz zostanie przedstawiony z pustym polu, bez powiadamiania użytkownika o jego obligatoriness.
Każda wskazówka, dlaczego tak działa? Czy istnieje sposób, w jaki mogę polecić reCaptcha, aby umożliwić walidację formularza HTML5 przed przejęciem kontroli?
Niezwykle schludna odpowiedź!Nadal nie wiem, dlaczego dołączenie zdarzenia do programu obsługi 'onClick' powinno mieć wpływ na obsługę programu' onSubmit', zabijając jego wbudowane funkcje sprawdzania poprawności, ale to niewielkie pytanie: moje potrzeby były dość złożone (był to tylko pierwszy element układanki) i teraz są w pełni sprawne. Dzięki! –
Edytowałem odpowiedź, aby odpowiedzieć bardziej na tę część pytania zadawanego w poście. Nie ma za co! – maechler
Dziękuję za wyjaśnienia, bardzo doceniane! Uważaj, aby nie przekroczyć 20 edycji (masz 11 lat) lub post zostanie przekonwertowany na Community Wiki, a stracisz reputację. :) –