2017-09-14 3 views
0

J'ai un bouton d'envoi désactivé que je n'arrive pas à activer après avoir bien réussi une reCaptcha Google et avoir vérifié qu'il y a du texte dans une zone de saisie. J'utilise le HTML et 2 fichiers JS séparés ci-dessous, mais les fichiers JS semblent seulement fonctionner individuellement et non ensemble. Existe-t-il un moyen de vérifier le reCaptcha et de vérifier que la zone de texte est remplie? Je ne peux pas trouver de réponse similaire.Bouton Activer après reCaptcha et entrée rempli JS

HTML:

<input type="text" name="em" ID="em" class="form-item input-address" placeholder="Email"></input> 
<button type="submit" class="submit start" id="button1" alt="Submit" disabled="disabled"></button> 
</br> 
<?php foreach ($_POST as $key=> $value) { echo ' 
<p><strong>' . $key.':</strong> '.$value.'</p>'; } ?> 
<div class="g-recaptcha" data-sitekey="{key}" data-callback="enableBtn"></div 

recaptcha.js (cela fonctionne sur lui-même):

//Disable Button if No reCaptcha 
$("#button1").prop("disabled", true); 

function enableBtn() { 
$("#button1").removeAttr('disabled'); 
} 

Ce que je voudrais faire est d'avoir aussi le bouton désactivé s'il n'y a pas de texte dans la zone d'entrée. Je l'ai essayé et il fonctionne:

input.js (cela fonctionne aussi sur son propre mais pas avec recaptcha.js):

//Disable Button if Input Empty 
$(document).ready(function() { 
$('.input-address').keyup(function() { 

var empty = false; 
$('.input-address').each(function() { 
if ($(this).val().length == 0) { 
empty = true; 
} 
}); 

if (empty) { 
$("#button1").prop("disabled", true); 
} else { 
$("#button1").removeAttr('disabled'); 
} 
}); 
}); 
+0

Voir cette question similaire: https://stackoverflow.com/questions/29752659/how-to-make-google-recaptcha-a-required-field/29760366?s=1|6.2755#29760366 – colecmc

+0

Merci. Je verrai si je peux faire marcher ça. – user2007484

Répondre

0

Je suppose que vous utilisez la version programmatique Recaptcha. Vous devez d'abord inclure un rappel dans votre appel recaptcha. Quelque chose comme ça

recaptchaWidget1 = grecaptcha.render('recaptchaDiv1', { 
    'sitekey' : 'site-key-goes-here', 
    'theme'  : 'light', 
    'callback' : 'enableBtn' 
}); 

Sinon, vous pouvez configurer un rappel à l'aide des données attributs

<div class="g-recaptcha" data-sitekey="your_site_key" data-callback="enableBtn"></div> 

Suivant faire le rappel:

var enableBtn = function() { 
    $("#button1").removeAttr('disabled'); 
} 

C'est à ce sujet. Tant que le rappel est là, il devrait fonctionner.