J'ai un problème essayer d'atteindre ce résultat, à peu près ce dont j'ai besoin, c'est de désactiver le bouton Soumettre jusqu'à ce que le texte soit entré dans le champ de saisie. J'essaye certaines fonctions mais sans résultats.
MARKUP HTML P>
<form action="" method="get" id="recipename"> <input type="text" id="name" name="name" class="recipe-name" value="Have a good name for it? Enter Here" onfocus="if (this.value == 'Have a good name for it? Enter Here') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Have a good name for it? Enter Here';}" /> <input type="submit" class="submit-name" value="" /> </form>
6 Réponses :
Appelez une fonction JavaScript comme ci-dessous (donner l'exemple de jQuery) dans l'événement ONKECUP
function handleSubmit() { if($.trim($('#name').val() == '')) { $('.submit-name').attr('disabled','disabled'); } else { $('.submit-name').attr('disabled',''); } }
$("#textField").keyup(function() { var $submit = $(this).next(); // or $("#submitButton"); if(this.value.length > 0 && this.value != "Default value") { $submit.attr("disabled", false); } else { $submit.attr("disabled", true); } });
Vous pouvez utiliser ceci: voir dans jsfiddle . < / p> p>
C'est la réponse que je cherchais, merci beaucoup pour votre aide.
Vous pouvez essayer ceci:
var nameText = $("#name"); nameText.attr("disabled", "disabled"); nameText.change(function () { if(nameText.val().length > 0) { nameText.attr("disabled", ""); } else { nameText.attr("disabled", "disabled"); } });
N'oubliez pas de couper la valeur avant de vérifier la longueur
Le seul problème avec la solution accompagnée est que le bouton est activé uniquement après la mise au point est supprimé du champ de texte (après avoir saisi des données en cours). Ne devrait-il pas être activé dès que tout texte est entré dans le champ? Voici une solution qui implémente cela.
lien vers une autre solution: Gardez le bouton désactivé si le texte n'est pas entré p>
quelque chose comme ceci: p>
const controls = document.querySelectorAll("input, select"); for (const c of controls){ c.oldValue = c.value + c.checked; } var trackControls; (trackControls = function() { var disabled = true; for (const c of controls) { if (c.oldValue !== (c.value + c.checked)) { disabled = false; break; } } var selector = document.querySelector("[type=submit]"); if (selector != null) { selector.disabled = disabled; } })(); document.oninput = trackControls; document.onchange = trackControls; If you're not concerned about the cross browser compatibility. const does not work in IE