Обязательный атрибут в поле ввода не работает, когда я реализую Google recaptcha. Когда ввод пуст, форма должна быть не отправлена. Но форма отправляется, когда ввод пуст. Я последовал за руководство Google реализовать это в простейшей форме.
<?php if (isset($_POST['code']) && ($_POST['code'] == "whatever")) //do stuff?> ?>
Я хочу сделать так, чтобы recaptcha выполнялся только тогда, когда ввод не пустой, иначе предотвратил бы отправку формы и выполнение recaptcha.
<form id="form1" method="post" > <input name="code" type="text" required> <button data-sitekey="xxx"data-callback='onSubmit' type="submit" class="g-recaptcha" >Let me in</button> </form> </div> <script> function onSubmit(token) { document.getElementById("form1").submit(); } </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script>
Решение
Просматривая документацию, на которую вы ссылаетесь, вам, вероятно, лучше избавиться от
required
атрибут и добавление проверки к вашему сценарию, чтобы не отправлять форму, если поле I put является нулевым.Таким образом, JavaScript будет проверять, является ли поле пустым, а затем выдает предупреждение о проверке или, тем не менее, лучше всего подходит для вашей ситуации.
Другие решения
Причиной этого является то, что ваша функция JavaScript напрямую вызывает submit, что обходится без проверки HTML5. Кнопка «отправить», являющаяся типом «отправить», автоматически выполнит отправку для вас, поэтому она вам не нужна.