Tester radio bouton en javascript / problème

dallap -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un problème pour tester si mon radio bouton est checked ou pas.

voici le formulaire:

<form action="search.php" method="get" name="Fsearch" onsubmit="return verif_field();">
	<label>Address</label>
	<input type="text" name="address" size="12" value="<?php echo $address; ?>" >

	<label>City</label>
	<input type="text" name="city" size="12" value="<?php echo $city; ?>" >

	<label>Carburant</label>
		<input type="radio" name="carburant" value="bp95" > BP95<br>
		<input type="radio" name="carburant" value="bp85" > BP85<br>
		<input type="radio" name="carburant" value="gazole" > Gazole<br>

	<input type="submit" value="Search">
	</form>


et le javascript:
	 function verif_field() {
		 
	if ( ((document.Fsearch.city.value == '') && (document.Fsearch.address.value == '')) || (!document.Fsearch.carburant.checked) )  {
		alert('Please enter a city and choose a carburant');
		document.Fsearch.city.focus();
			return false;
		 }
		  
	}


je voudrais que la validation du formulaire se fasse si l'un des deux champs "city" ou "address" soit rempli ainsi que l'un des radio boutons "carburant"

j'ai essayé plein de choses mais ça ne marche toujours pas, il m'affiche l'alert même si le bouton est coché ...
le problème viens surement du radio ..
auriez vous une solution?

merci ! :)
A voir également:

8 réponses

Harricote Messages postés 417 Date d'inscription   Statut Membre Dernière intervention   41
 
function verif_field()
{
if(document.Fsearch.city.value == '' && document.Fsearch.address.value == '')
{
if(document.Fsearch.carburant.checked == False)
{
alert('Please enter a city and choose a carburant');
document.Fsearch.city.focus();
return false;
}
}
}

essaye...
0
dallap
 
salut,

j'ai essayé en même sans cocher le radio bouton le formulaire est validé :(
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Tu dois vérifier un par un s'il y a un bouton de coché.
0
dallap
 
j'ai encore essayé pas mal de choses mais rien ne marche :(

voici la dernière:

 function verif_field()  
		{ 
				 var test = false;
				var f = document.getElementById("Fsearch" );
				 if(f) {
				    var champs = f.getElementsByTagName("radio" );
				    for(var i=1; i<=3; i++) {
						alert("boucle1");
				       if(champs[i].checked) {
						   alert("checked");  
                                 test = true;  
                             }  
				    }
				 }
		}


j'arrive dans la boucle "1" mais pas dans la "checked"

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Il faut initialiser i à 0.
0
Harricote Messages postés 417 Date d'inscription   Statut Membre Dernière intervention   41
 
var f = document.getElementById("Fsearch"); est faux !!!
car Fsearch n'est pas un id !!!

met <form id="Fsearch" name="Fsearch"...>
0
dallap
 
J'ai mis i à 0 et j'avais déjà rajouté un id.
Ca ne marche toujours pas, il check bien les champs address et city mais pas les 3 radio boutons.

mon formulaire:
<form action="search.php" method="get" id="Fsearch" name="Fsearch" onsubmit="return verif_field();">
<p>
<label>Address</label>
<br>
<input type="text" name="address" size="12" value="<?php echo $address; ?>" >
<br>		<br>	
<label>City</label>
<br>
<input type="text" name="city" size="12" value="<?php echo $city; ?>" >
<br><br>
<label>Carburant</label>
<br />
<?php if ($carburant=="bp95"){
	echo "
	<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp95\" checked=\"checked\" /> BP95<br />
	<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp85\" /> BP85<br />
	<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"gazole\" /> Gazole<br />
		 ";
	}
	else if ($carburant=="bp85"){
		echo "
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp95\" /> BP95<br />
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp85\" checked=\"checked\" /> BP85<br />
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"gazole\" /> Gazole<br />
		";}
	else if ($carburant=="gazole"){
		echo "
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp95\" /> BP95<br />
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp85\" /> BP85<br />
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"gazole\" checked=\"checked\" /> Gazole<br />
		";}
	else {
		echo "
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp95\" /> BP95<br />
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"bp85\" /> BP85<br />
		<input type=\"radio\" id=\"carburant\" name=\"carburant\" value=\"gazole\" /> Gazole<br />
		";}
		?>
		
<input type="submit" value="Search" />
</p>
</form>


le javascript:

function verif_field()  
{ 
		if(document.Fsearch.city.value == '' && document.Fsearch.address.value == '')
		{ 
		alert('Please enter a city and choose a carburant'); 
		document.Fsearch.city.focus(); 
		return false; 
		}  
		else {
		var test = false;
		var f = document.getElementById("Fsearch" );
		 if(f) {
		    var champs = f.getElementsByTagName("radio" );
		    for(var i=0; i<3; i++) {
		       if(champs[i].checked) {
				   alert("checked");  
                               test = true;  
                           }  		    }		 }}
		return test;
		}


(pour l'affichage des radio bouttons je test si la valeur $carburant contient quelque chose pour la checker si elle l'était à la page précédente)

le formulaire est envoyé meme si aucun radio boutton n'est coché.
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
getElementsByTagName("radio" ) : c'est une nouvelle balise ?
Scan les getElementsByTagName('input') et vérifie si l'attribut type == 'radio'
0