У меня есть эта довольно простая форма, которая в последнее время засыпалась спамом, и хочу заставить ее использовать Recaptcha 3.
Итак, вот форма:
<div class="col-md-6 mt50">
<form class="contact-us-form" id="contactForm" name="myemailform" action="contact_form_submit.php" method="post">
<input type="text" name="name" value="" placeholder="Εισάγετε το όνομά σας.." required=""/>
<input type="email" name="email" value="" placeholder="Εισάγετε το email σας.." required=""/>
<textarea name="message" placeholder="Γράψτε μας το μήνυμά σας.." required="" rows="5"></textarea>
<div class="clearfix "></div>
<button type="submit" class="sr-btn sr-primary hvr-sweep-to-right pull-right mb20" data-loading-text="Στέλνω..."><span class="icon pe-7s-paper-plane"></span>Αποστολή μηνύματος</button>
</form> <!-- end form -->
<!-- form Validation script -->
<script language="JavaScript">
// Code for validating the form
var frmvalidator = new Validator("myemailform");
frmvalidator.addValidation("name","req","Παρακαλώ συμπληρώστε το όνομά σας");
frmvalidator.addValidation("email","req","Παρακαλώ συμπληρώστε το email σας");
frmvalidator.addValidation("email","email","Παρακαλώ συμπληρώστε μία έγκυρη διεύθυνση email");
</script>
<!-- End of form Validation script -->
После отправки формы я вызываю следующий сценарий:
<!--Submit (with recaptcha)-->
<script>
$('#contactForm').submit(function(event) {
event.preventDefault();
var email = $('#email').val();
grecaptcha.ready(function() {
grecaptcha.execute('RECAPTCHA_PUBLIC_KEY', {action: 'contact_form'}).then(function(token) {
$('#contactForm').prepend('<input type="hidden" name="token" value="' + token + '">');
$('#contactForm').prepend('<input type="hidden" name="action" value="contact_form">');
$('#contactForm').unbind('submit').submit();
});;
});
});
</script>
<!--End of submit (with recaptcha)-->
contact_form_submit. php работает и отправляет электронное письмо, если оценка ReCaptcha выше 0,5, как и должно быть, но раньше я отправлял электронное письмо используя ajax и отобразите всплывающее окно с сладкой ласточкой.
Это сделано в js, который не был сделан мной, и в части, которая делает это:
var a = {
success: function () {
s("#contactForm").clearForm(), swal("Ευχαριστούμε!", "Θα επικοινωνήσουμε μαζί σας άμεσα. Επίσης θα σας ενημερώσουμε όταν θα έχουμε νέα για την σελίδα μας!", "success")
}
};
s("#contactForm").ajaxForm(a);
Теперь, когда У меня есть event.preventDefault (); Он переопределяет часть ajax и перенаправляет отправителя в contact_form_submit. php. Конечно, это не работает должным образом. Письмо отправляется и отправляется, ответ recaptcha перехватывается и проверяется должным образом ... Однако я не хочу перенаправлять на страницу contact_form_submit. php. Я хочу, чтобы кнопка submit создавала всплывающие окна swal, к которым он привык.
Есть ли способ изменить сценарий submit, чтобы он выполнял все предварительные требования recaptcha и по-прежнему вызывал swal, когда $ ( '#contactForm'). unbind ('submit'). submit (); срабатывает?