J'ai besoin de votre aide ! Je cherche un moyen, si il existe, un tuto ou une explication me permettant de répondre au critère suivant :
J'aimerai pouvoir changer le background-color d'une div lorsque certain champs de mon Formulaire de type required sont remplit par l'utilisateur.
Concrètement j'ai un formulaire séparer en 6 catégories de couleur bleu. Chaque catégories est un gros titre, j'utilise un principe d’accordéon pour afficher / masquer mes différentes catégories. Mais ce que j'aimerai faire c'est changer le background d'une catégories lorsque les champs "required" de celle-ci sont remplit par l'utilisateur et non pas lors du click sur le submit. C'est à dire que des que l'utilisateur remplit les champs required sans appuyez sur le bouton envoyer car il y'a d'autre champ à remplir, la catégories passe de bleu à vert.
Je sais pas si je suis très clair mais je ne peux pas mettre de screen pour cause de confidentialité ...
Si vous avez des idées n'hésitez pas !
Merci d'avance !
La culture, c’est comme le parachute : si on ne veut pas s’écraser, il faut l’ouvrir.
j'ai un problème avec le onkeyup désolé je débute dans le développement ...
J'ai réussi à rajouter un attributs css quand la personne écrit mais je n'arrive pas à mettre la condition sur plusieurs champs. Par exemple j'ai deux champs, le onkeyup s'applique bien quand je remplit un champ mais j'aimerai qu'il s'applique que lorsque j'ai remplit les deux champs.
Voici mon code test :
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
var x = document.getElementById("fname").required;
var y = document.getElementById("first").required;
document.querySelector("#test").style.display = "none";
}
</script>
</head>
<body>
Enter your name: <input type="text" id="fname" onkeyup="myFunction()" required>
Enter your First name: <input type="text" id="first" onkeyup="myFunction()" required>
<div id="test">
<h1>JE TEST</h1>
</div>
</body>
</html>
J'ai également testé un if :
function myFunction() {
if (document.getElementById("fname").required && document.getElementById("first").required) {
document.querySelector("#test").style.color = "red";
} else {
document.querySelector("#test").style.color = "black";
}
}
Mais j'ai le meme problème, qu'un champ suffit pour appliqué le style...
De plus j'ai un autre problème, si j'écris dans ce champ la couleur de mon text change bien mais si j'efface elle ne revient pas à l'origine. Il existe un moyen pour le remettre à l'état d'origine ?
- Edité par Nicolas412 15 septembre 2017 à 9:35:03
La culture, c’est comme le parachute : si on ne veut pas s’écraser, il faut l’ouvrir.
Merci pour ta réponse cheech mais ça ne fonctionne plus du tout si j'essaye le code que tu as mis. Peut importe le champ que je rempli ou même les deux mon id reste en noir et ne passe pas en rouge ...
La culture, c’est comme le parachute : si on ne veut pas s’écraser, il faut l’ouvrir.
En disposant un event en argument des fonctions, il serait plus facile de detecter sur quel champ l'on se trouve (et de remonter sur le titre de la rubrique avec des parentNode ou autres instructions permettant de se promener dans le DOM).
Ensuite, il ne suffit pas de détecter les champ vides mais tous ceux contenant des caractères invisibles (espaces, tabulations, retours à la ligne etc.
D'où quelque chose comme
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Test</title>
<style>
html,body{margin:0;padding:0;font-family:Georgia;background-color:#ccc;}
span {display:inline-block;width:200px;height:auto;}
.tlr{text-align:right}
</style>
</head>
<body>
<p><span class="tlr">Enter your name : </span><span><input type="text" id="fname" onkeyup="myFunction(event)" required></span></p>
<p><span class="tlr">Enter your First name : </span><span><input type="text" id="first" onkeyup="myFunction(event)" required></span></p>
<div>
<h1 id=tst>Je test</h1>
</div>
<script>
function myFunction(e) { var t=e.target;
console.log(t.id+" "+t.value)
if (t.value.replace(/\s+/g,"")=="") document.getElementById("tst").innerHTML = "Entrée non valide";
else document.getElementById("tst").innerHTML = "Je test";
}
</script>
</body>
</html>
- Edité par 007julien 18 septembre 2017 à 15:00:40
Pour commencer, merci à vous deux d'avoir pris du temps pour m'aider !
Cheech j'ai testé ce code :
function myFunction() {
if (document.getElementById("fname").textContent != '' && document.getElementById("first").textContent != '') {
alert("Je fonctionne");
} else {
alert("Je ne fonctionne pas");
}
}
dès que je remplit un champ j'ai l'alert "je ne fonctionne pas"
De même pour le code de 007julien je ne rentre pas dans mon if je ne comprend pas pourquoi ...
Voici le code js :
function myFunction(e) {
var t = e.target;
console.log(t.id + " " + t.value)
if (t.value.replace(/\s+/g, "") == "")
alert("Je fonctionne");
else
alert("Je ne fonctionne pas");
}
La culture, c’est comme le parachute : si on ne veut pas s’écraser, il faut l’ouvrir.
Verification champs required non vide
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.