11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je vais essayé d'être précis, car mon problème est difficile à expliqué.

J'ai un formulaire qui sert à faire une recherche sur les projets présents sur le site.
Le but étant de sélectionner le critère de recherche, puis ajouter le mot clé recherché

Au début il y a qu'un seul champ "Critère" visible, c'est un "select", selon la valeur sélectionné, un champ apparaît pour mettre le mot clé.

Par exemple si je sélectionne "S.1" un champ " C.1 " apparaît qui est obligatoire (required)
Si je sélectionne "S.2" le champ "C.2" apparaît. qui est aussi obligatoire (required)

Le problème

Comme les champs sont obligatoire, je ne peux pas valider le formulaire, en effet si je choisie "S.1" et saisie une valeur dans "C.1" le formulaire refuse d’être valider parce que "C.2" est vide. logique.

Comment je peux faire pour que quand je sélectionne "S.1", le requise du C.2 soit supprimer.

voici les code

Le formulaire


<div id="form-saisie" class="post">


	<form action="index.php?page=saisie_proj&mode=RESULT" method="post" id="signup">
           		<div id="titreForm">Recherche d'un Projet</div>
<div id="corpForm2">		
		<fieldset>
			<ol>
				<li>
					<label for="statut">Rechercher par *:</label>
						<select placeholder="Acronyme du projet" name="type" id="statut" onchange="DisplayOrNot(this.value);">
							<option disabled selected></option>
							<option value="1">Acronyme</option>
							<option value="2">Responsable</option>
							<option value="3">mot(s) clé(s)</option>
						</select>
				</li>
				<li id="LowRep" name="LowRep">	
					<label for="acronyme">Acronyme  *:</label> 
					<input type="text" id="acronyme" name="acronyme" placeholder="Acronyme du projet" required />
				</li>
				<li id="LowRep2" name="LowRep2">	
					<label for="responsable" id="responsable">Responsable * :</label> 
					<select name="responsable" size="1">
					<?php  echo $champopt_user;?> </select>	
				</li>
				<li id="LowRep3" name="LowRep3">	
					<label for="montant">mot(s) clé(s) *:</label> 
					<input type="text" id="montant" name="motcle" placeholder="séparez les mots clés par une virgule" required />
				</li>

			</ol>
			</fieldset>		
          		<div id="piedForm">
			<input type="reset" name="reset" id="Annuler" value="Annuler" />
			<input type="submit" name="valid" id="Valider" value="Valider" />
		</div> 
</div>	
</form>

		
</div>


mon scipt


function ApparitionInput() {
			
			document.getElementById("LowRep").style.display = "none";
			document.getElementById("LowRep2").style.display = "none";
			document.getElementById("LowRep3").style.display = "none";
         }
			function DisplayOrNot(p) {
				
			var lowrep = document.getElementById("LowRep");
			var lowrep2 = document.getElementById("LowRep2");
			var lowrep3 = document.getElementById("LowRep3");		
        
		if (p==1) {
			
			lowrep.style.display = "inline";			
			lowrep2.style.display = "none";
			lowrep3.style.display = "none";
        }
		else if (p==2) {
			lowrep.style.display = "none";			
			lowrep2.style.display = "inline";
			lowrep3.style.display = "none";
        }
		else if (p==3) {
			
			lowrep.style.display = "none";			
			lowrep2.style.display = "none";
			lowrep3.style.display = "inline";
        }
        else {
			
			lowrep.style.display = "none";
			lowrep2.style.display = "none";
			lowrep3.style.display = "none";
			}
      }


        window.onload = ApparitionInput;

Modifié par Dznet (10 Mar 2015 - 16:13)
Hello,

Pour ajouter le required :
.setAttribute("required", "")

Pour le supprimer :
.removeAttribute("required")


A toi de modifier ton code en conséquence pour que cela fonctionne selon ton souhait.

Bon code !