Rechercher : dans
Par :

Bouton radio avec control de saisie

Dernière réponse le 15 avr 2009 à 12:50:04 nawak.seb, le 29 jui 2008 à 11:14:19 
 Signaler ce message aux modérateurs

Bonjour,
Dans un formulaire PHP, j’ai 3 boutons radio (aucune par défaut), avec un bouton « envoyer ».


Mon souhait était d’avoir un contrôle de saisie sur ses radios en JavaScript.

Seulement la radio 1 qui est considéré comme vrai; les autres,sont considéré comme faux.
Voici mon code :

<script type="text/javascript">
function verif()
{
if(document.getElementById('travaux').checked==false)
		{
			alert ("Veuillez sélectionner un type de travaux");
			document.form1.site.focus();
			return false;
		}
		
		else {return true;}
}
</script>


... plus loin ...



<table width="200">
      <tr>
        <td><label>
          <input type="radio" id="travaux" name="travaux" value="1">
          Correctif</label></td>
      </tr>
      <tr>
        <td><label>
          <input type="radio" id="travaux"  name="travaux" value="2">
          Travaux neufs</label></td>
      </tr>
      <tr>
        <td><label>
          <input type="radio"  id="travaux" name="travaux" value="3">
          Pr&eacute;ventif</label></td>
      </tr>
      <tr>
        <td><label>
          <input type="radio"  id="travaux" name="travaux" value="4">
          Am&eacute;lioration</label></td>
      </tr>
    </table>


Comment je dois faire pour avoir un control sur toutes les radios et non une seule ?

Quand l'impossible devient possible

1

Sky34gl3, le 29 jui 2008 à 11:49:53

Salut,
tu dis avoir 3 boutons radios : moi j'en vois 4. Et ensuite tu dis que ton code marche juste avec la première? C'est bien ça?
Essaie ce code :

function verif()
{
	var valide=false;
	var inpNodes = document.getElementsByName('travaux');
	for(var i=0; i< inpNodes.length;i++){
		if ( inpNodes[i].getAttribute('checked')==true){
				valide = true;
		}
	}
	if (valide == false){
		alert ("Veuillez sélectionner un type de travaux");
		document.form1.site.focus();
	}
	return valide;
}


C'est ta fonction que j'ai un peu modifié.

Répondre à Sky34gl3

2

Sky34gl3, le 29 jui 2008 à 11:52:29

Salut, tu as 4 boutons radios à ce que je vois, et pas 3.
Tu dis que ta fonction ne marche que pour la première? C'est un peu normal, tes quatre boutons radios ont la même id et tu ne fais qu'un simple if. Dès qu'il tombe sur la première id cherchée, il va pas plus loin.
Essaie ça :

function verif()
{
	var valide=false;
	var inpNodes = document.getElementsByName('travaux');
	for(var i=0; i< inpNodes.length;i++){
		if ( inpNodes[i].getAttribute('checked')==true){
				valide = true;
		}
	}
	if (valide == false){
		alert ("Veuillez sélectionner un type de travaux");
		document.form1.site.focus();
	}
	return valide;
}

C'est ta fonction que j'ai un peu modifié.

Répondre à Sky34gl3

3

Sky34gl3, le 29 jui 2008 à 11:55:21

Test

Répondre à Sky34gl3

4

TesteurPHP, le 29 jui 2008 à 11:57:00
  • +1

Problèmes avec le site?

Répondre à TesteurPHP

5

nawak.seb, le 29 jui 2008 à 14:16:22

Help me !!! Quand l'impossible devient possible

Répondre à nawak.seb

6

nawak.seb, le 29 jui 2008 à 14:20:43

Oui , probleme avec le site

Je vais tester !!
et oui, il y a 4 boutons radio
Quand l'impossible devient possible

Répondre à nawak.seb

7

nawak.seb, le 29 jui 2008 à 14:58:30

Un grand MERCI a Sky34gl3 !!! C’était bien ça !

Ca fonctionne !!
Me voilà débloqué jusqu'à la prochaine fois ! :D

Quand l'impossible devient possible

Répondre à nawak.seb

8

nawak.seb, le 29 jui 2008 à 16:21:28

Me revoilà, avec une question toute bête ;
Quand je clique sur le bouton « ok » de mon alert, celle-ci m’envoi a sur une autre fenêtre, et non de mon formulaire.

Comment je peu faire pour rester sur ce formulaire ? Quand l'impossible devient possible

Répondre à nawak.seb

9

Sky34gl3, le 29 jui 2008 à 17:10:42

Salut.
Et en faisant comme ça?

function verif()
{
	var valide=false;
	var inpNodes = document.getElementsByName('travaux');
	for(var i=0; i< inpNodes.length;i++){
		if ( inpNodes[i].getAttribute('checked')==true){
				valide = true;
		}
	}
	if (valide == false){
		alert ("Veuillez sélectionner un type de travaux");
		return false;
	}else{
		return true;
	}
}

<form action="tapage.php" onsubmit="return verif()" method="post">

<input type="submit" value="Go"/><!-- Ne pas mettre de onclick dans ton submit. -->

Répondre à Sky34gl3

10

nawak.seb, le 29 jui 2008 à 18:03:27

Hum hum...j'ai testé mais toujours la meme chose

Voici ceux qu'il se passe :


Notice: Undefined variable: travaux in ... \insert_di.php on line 12
Warning: Cannot modify header information - headers already sent by (output started at ...\insert_di.php:12) in ... \insert_di.php on line 33


C’est normal qu’il ne trouve pas la variable « travaux » vu qu’elle n’est pas coché !, mais comment lui dire dans ce cas là ?
Quand l'impossible devient possible

Répondre à nawak.seb

11

Sky34gl3, le 29 jui 2008 à 18:55:25

Ce code est fonctionnel je le confirme :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
function verif()
{
var valide=false;
var inpNodes = document.getElementsByName('travaux');
for(var i=0; i< inpNodes.length;i++){
if ( inpNodes[i].getAttribute('checked')==true){
valide = true;
}
}
if (valide == false){
alert ("Veuillez sélectionner un type de travaux");
return false;
}else{
return true;
}
}
</script>
</head>
<body>
<form action="coucou.php" onsubmit="return verif()" method="post">
<table width="200">
<tr>
<td><label>
<input type="radio" id="travaux" name="travaux" value="1">
Correctif</label></td>
</tr>
<tr>
<td><label>
<input type="radio" id="travaux" name="travaux" value="2">
Travaux neufs</label></td>
</tr>
<tr>
<td><label>
<input type="radio" id="travaux" name="travaux" value="3">
Préventif</label></td>
</tr>
<tr>
<td><label>
<input type="radio" id="travaux" name="travaux" value="4">
Amélioration</label></td>
</tr>
</table>
<input type="submit" value="Go"/>
</form>
</body>
</html>

Répondre à Sky34gl3

17

 kenou, le 15 avr 2009 à 12:50:04

Bonjour,

il semblerait que ta fonction verif() ne marche pas avec firefox, elle fonctionne pourtant parfaitement avec internet explorer.
est-ce que tu aurais une idée pour la faire marcher également sous firefox?

d'avance merci pour ton aide.

Répondre à kenou

12

nawak.seb, le 30 jui 2008 à 09:38:37

Impeccable !

Mon erreur était dans mon code JavaScript, je mettais trompé par rapport au focus, les champs n’étaient pas bon

document.form1.site.focus();

Au lieu de
document.form1.travaux[0].focus();

Encore merci !
Quand l'impossible devient possible

Répondre à nawak.seb

13

Sky34gl3, le 30 jui 2008 à 13:56:29

De rien bonne journée :)

Répondre à Sky34gl3

14

nawak.seb, le 30 jui 2008 à 14:17:53

Et avec 2 boutons submit « Envoyer » et « annuler »
Au moment de l'action « Annuler», comment lui dire de ne pas contrôler la saisie ?

Voici mon code:

 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
<head> 
<title>test</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<script type="text/javascript"> 
function verif() 
{ 
var valide=false; 
var inpNodes = document.getElementsByName('travaux'); 
for(var i=0; i< inpNodes.length;i++){ 
if ( inpNodes[i].getAttribute('checked')==true){ 
valide = true; 
} 
} 
if (valide == false){ 
alert ("Veuillez sélectionner un type de travaux"); 
return false; 
}else{return true;}} 


function annul()
{
window.location.href = 'page1.php';
return true;
}

</script> 
</head> 
<body> 
<form action="coucou.php" onsubmit="return verif()" method="post"> 
<table width="200"> 
<tr> 
<td><label> 
<input type="radio" id="travaux" name="travaux" value="1"> 
Correctif</label></td> 
</tr> 
<tr> 
<td><label> 
<input type="radio" id="travaux" name="travaux" value="2"> 
Travaux neufs</label></td> 
</tr> 
<tr> 
<td><label> 
<input type="radio" id="travaux" name="travaux" value="3"> 
Préventif</label></td> 
</tr> 
<tr> 
<td><label> 
<input type="radio" id="travaux" name="travaux" value="4"> 
Amélioration</label></td> 
</tr> 
</table> 
<input type="submit" value="Go"/>
<input type="submit" value="Annuler" onclick="annul()" /> 
</form> 
</body> 
</html>


Et après , j'arrete mes questions !lol Quand l'impossible devient possible

Répondre à nawak.seb

15

Sky34gl3, le 30 jui 2008 à 15:24:47

Peut être comme ça? :

<input type="submit" value="Annuler" onclick="javascript:this.form.onsubmit='';annul();" /> 

Répondre à Sky34gl3

16

nawak.seb, le 30 jui 2008 à 17:45:03

Dans ma fonction j'ai remplacé

window.location.href = 'page1.php'; 

par
document.form1.action="page1.php" ;

et j'ai utilisé la commande de Sky34gl3
<input type="submit" value="Annuler" onclick="javascript:this.form.onsubmit='';annul();" />

Le résultat est bon.
Mille mercis à Sky34gl3 Quand l'impossible devient possible

Répondre à nawak.seb