[javascript] checkbox textarea

Fermé
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 24 juil. 2009 à 14:35
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 4 août 2009 à 15:08
Bonjour,

Voilà j'ai un champ texte et une checkbox au dessus :

<td><INPUT TYPE=checkbox NAME=RDD CHECKED> Qualification<br><TEXTAREA name="rodd" rows=20 cols=20>$(cat liste | grep RD10D)</TEXTAREA></td>


Un "cat" d'un fichier affiche le contenu de mon champ texte et ensuite je fais dans mon fichier php un :
$rodd=$_POST['rodd'] pour récupérer ma valeur.

En fait j'aimerai que quand on clique sur la checkbox ça me mette dans mon POST tout ce qu'il y a dans mon champ texte.

Est-ce que quelqu'un saurait faire ça ?

Merci.

Cordialement,

18 réponses

Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
24 juil. 2009 à 14:51
Faudrait faire un genre de if(chekbox.checked), alors ca envoie ton texarea ! (javacript ?)
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
24 juil. 2009 à 15:43
Bah javascript oui car en fait quand on désactive la checkbox je voudrais que le textarea ce vide et quand on l'active et bien elle soit remplie des infos du "cat".
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
28 juil. 2009 à 10:45
Personne ne saurait faire ça ?

Merci.

Cordialement,
0
resalut Messages postés 784 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 21 janvier 2010 55
28 juil. 2009 à 10:47
tu veux un explication ou le code ?
0

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

Posez votre question
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
28 juil. 2009 à 15:48
Bah le code et l'explication ça sera l'idéal :-)

Merci.

Cordialement,
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 juil. 2009 à 16:11
<td>
<input type="checkbox" name="RDD" value="case1" CHECKED> Qualification<br>
<textarea name="rodd" rows="20" cols="20">$(cat liste | grep RD10D)</textarea></td>
attention il te manquait la value de la checkbox
et tu recuperes par:
<?php
if(isset($_POST['case1']) && $_POST['case1'] =="case1"){
// si la case est cochée:
$rodd=$_POST['rodd']; //tu recupères la valeur qui est dans le textarea

}else{
$rodd = ""; //sinon vide
}
0
vincent170186 Messages postés 316 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 28 septembre 2012 52
28 juil. 2009 à 16:16
salut l'ami....
alors sans passez par javascript ya moyen....
sur ta page php il te sufiit de mettre un if
on prend le cas ou ta chekbox a une value =1 (dans mon exemple on l'appellera checkbox et texta pour le textarea)
donc si c'est cochez tu enverras 1 sinon rien donc sur ta page php tu met :
<?php
$rodd=$_POST['chekbox'];
if ($rodd=='1')
{ $rodd=$_POST['texta'];}

?>

bon en relisant bien les post j'ai vu que tu voulais que la text area ce vide...
bon la par contre le javascript vas etre obligatoire...
il faut crée une fonction (ici vidtext) qui vide ton texarea
bon on donne une id au textarea (ici texta) et a la checkbox (ici check)en on fait ....(entre 2 balise script bien sur....)
function vidtext ()
if (document.getElementById("chek").checked==false)
{document.getElementById("texta").innerHTML="";
}

aprés si tu veux faire "disparaitre" le texarea plutot que de le vider ça donne

function vidtext ()
if (document.getElementById("chek").checked==false)
{document.getElementById("texta").style.display="none";
}
else
{document.getElementById("texta").style.display="block";
}

ensuite dans ta balise <input type='checkbox' value='1' onclick='vidtext()' />
voila , je suis pas sur que ça repond exactement a ta demande mais bon.... si tu a besoin d'autre chose...n'hesite pas !
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
28 juil. 2009 à 16:30
Merci à toi vincent ! :-)
Je vais regarder ça et si j'ai besoin je reviendrais :-)

Merci.

Cordialement,
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
28 juil. 2009 à 18:32
Bah en fait j'ai mis ce que tu as mis et ça me fait planter mon navigateur.

J'ai mis dans mon head :
<script>
function vidtext ()
if (document.getElementById("chrodp").checked==false)
{
        document.getElementById("rodp").innerHTML="";
}
</script>

<td><INPUT TYPE=checkbox NAME="chrodp" CHECKED value="1" onclick="vidtext()"> Liste<br><TEXTAREA name="rodp" rows=20 cols=20>$(cat liste | grep ROD110P)</TEXTAREA></td>


Peut-être que ça vient du fait qu'il y a beaucoup de ligne dans mon fichier que je "cat" non ?

Merci.

Cordialement,
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 juil. 2009 à 18:35
document.getElementById("rodp").innerHTML="";


innerHTML est utiliser pour ecrire dans un div

pour ecrire dans un input il faut utiliser .value

document.getElementById("rodp").value="";
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
29 juil. 2009 à 11:23
Ca marche toujours pas et ça me fait encore planter mon navigateur.

Voici mon code :
#!/bin/bash
echo "Content-type: text/html"
echo
sudo /usr/bin/refreshlist.sh 2>&1
cat <<EOT
<HTML>
<HEAD>
<TITLE>Interface</TITLE>
<script>
function vidtext ()
if (document.getElementById("chrodp").checked==false)
{
        document.getElementById("rodp").value="";
}
</script>
</HEAD>
<BODY BGCOLOR="#EEEEEE">
<H1>Interface </H1>

<FORM ACTION=../patch.php METHOD=POST>
<table valign=top bgcolor="#FFFFFF" align=center cellspacing=5 cellpadding=5 border=0>
<tr><td align=right>Utilisateur: <INPUT TYPE=radio NAME=user VALUE=user1><br><INPUT TYPE=radio NAME=user VALUE=user2></td><td>user1<br>user2</td></tr>

<tr valign=top><td colspan=2><table border=0 cellspacing=0><tr BGCOLOR="#DDDDDD"><td align=center colspan=3>Liste</td></tr><tr BGCOLOR="#DDDDDD">
<td><INPUT TYPE=checkbox NAME="chrodp" CHECKED value="1" onclick="vidtext()"> Liste1<br><TEXTAREA name="rodp" rows=20 cols=20>$(cat liste | grep ROD110P)</TEXTAREA></td>
<td><INPUT TYPE=checkbox NAME="chrode" CHECKED> Liste2<br><TEXTAREA name="rode" rows=20 cols=20>$(cat liste | grep ROD110E)</TEXTAREA></td>
<td><INPUT TYPE=checkbox NAME="chrodd" CHECKED> Liste3<br><TEXTAREA name="rodd" rows=20 cols=20>$(cat liste | grep ROD110D)</TEXTAREA></td>
</tr></table></td></tr>

<tr valign=top><td align=center colspan=2><INPUT TYPE=SUBMIT VALUE="Patch!"></td></tr>
</table>
</FORM>
</body>
EOT

0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
29 juil. 2009 à 14:19
En fait déjà j'avais oublié les { } dans la fonction :-)

Maintenant j'ai une erreur via firebug quand je décoche la checkbox :

document.getElementById("chrodp") is null
vidtext()patch.cgi (ligne 7)
function onclick(event) { vidtext(); }(click clientX=348, clientY=245)1 (ligne 2)
[Break on this error] if (document.getElementById("chrodp").checked==false)\n
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 juil. 2009 à 15:35
tu uitlises:
document.getElementById(

ça veut dire que tu veux atteindre un objet par son id

ils sont où les id de tes balise <input <textarea ?

alors j'ai commencé à corriger, continue

rajoutes aussi les " " pour la valeur des attributs

et mets les noms des balises html en minuscules exemple:
<input type="text" name="..." id="...." value="..." />

etc...

<HTML>
<HEAD>
<TITLE>Interface</TITLE>
<script>
function vidtext (){
if (document.getElementById("chrodp").checked==false)
{
        document.getElementById("rodp").value="";
}
}
</script>
</HEAD>
<BODY BGCOLOR="#EEEEEE">
<H1>Interface </H1>

<FORM ACTION="../patch.php" METHOD="POST">
<table valign=top bgcolor="#FFFFFF" align=center cellspacing=5 cellpadding=5 border=0>
<tr><td align=right>Utilisateur: 
<INPUT TYPE="radio" NAME="user" VALUE="user1"><br>
<INPUT TYPE="radio" NAME="user" VALUE="user2"></td><td>user1<br>user2</td></tr>

<tr valign="top"><td colspan="2">
<table border=0 cellspacing=0><tr BGCOLOR="#DDDDDD">
<td align="center" colspan="3">Liste</td></tr><tr BGCOLOR="#DDDDDD">
<td><INPUT TYPE="checkbox" NAME="chrodp" id="chrodp" CHECKED value="1" onclick="vidtext()"> Liste1<br><TEXTAREA name="rodp" id="rodp" rows=20 cols=20>$(cat liste | grep ROD110P)</TEXTAREA></td>
<td><INPUT TYPE="checkbox" NAME="chrode" CHECKED> Liste2<br><TEXTAREA name="rode" rows=20 cols=20>$(cat liste | grep ROD110E)</TEXTAREA></td>
<td><INPUT TYPE="checkbox" NAME="chrodd" CHECKED> Liste3<br><TEXTAREA name="rodd" rows=20 cols=20>$(cat liste | grep ROD110D)</TEXTAREA></td>
</tr></table></td></tr>

<tr valign="top"><td align="center" colspan="2"><INPUT TYPE="SUBMIT" name=" patch" VALUE="Patch!"></td></tr>
</table>
</FORM>
</body>
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
29 juil. 2009 à 17:54
Ah oué je viens de comprendre ! :-) merci pour l'explication alain ! :-)

J'aurai encore 2 questions :
- Et en admettant que j'ai plusieurs textarea avec une checkbox associée, comment on peut faire pour utiliser une seul fonction ? (sans doute mettre id dans une variable non ? mais après faudrait faire une boucle ? )
- Comment on peut faire pour quand on recoche la checkbox le contenu revienne ? car j'ai mis ça et ça marche pas :

function vidtext (){
if (document.getElementById("chrodp").checked==false)
{
        document.getElementById("rodp").value="";
}
else
{
        document.getElementById("rodp").value="$(cat liste | grep ROD110P)";
}
}


Erreur :
unterminated string literal
[Break on this error] document.getElementById("rodp").value="ROD1101\n
patch.cgi (ligne 13)
vidtext is not defined
function onclick(event) { vidtext(); }(click clientX=351, clientY=300)


Merci.

Cordialement,
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 juil. 2009 à 18:50
pour repondre a ta première question, il suffitt de passer les id en arguments à la fonction, et modifier la fonction ainsi:

<HEAD>
<TITLE>Interface</TITLE>
<script>
function vidtext (id_case,id_textarea){
if (document.getElementById(id_case).checked==false)
{
        document.getElementById(id_textarea).value="";
}
}
</script>
</HEAD>
<BODY BGCOLOR="#EEEEEE">
<H1>Interface </H1>

<FORM ACTION="../patch.php" METHOD="POST">
<table valign=top bgcolor="#FFFFFF" align=center cellspacing=5 cellpadding=5 border=0>
<tr><td align=right>Utilisateur: 
<INPUT TYPE="radio" NAME="user" VALUE="user1"><br>
<INPUT TYPE="radio" NAME="user" VALUE="user2"></td><td>user1<br>user2</td></tr>

<tr valign="top"><td colspan="2">
<table border=0 cellspacing=0><tr BGCOLOR="#DDDDDD">
<td align="center" colspan="3">Liste</td></tr><tr BGCOLOR="#DDDDDD">
<td><INPUT TYPE="checkbox" NAME="chrodp" id="chrodp" CHECKED value="1" onclick="vidtext('chrodp','rodp');"> Liste1<br><TEXTAREA name="rodp" id="rodp" rows=20 cols=20>$(cat liste | grep ROD110P)</TEXTAREA></td>
<td><INPUT TYPE="checkbox" NAME="chrode" CHECKED onclick="vidtext('chrode','rode');"> Liste2<br><TEXTAREA name="rode" rows=20 cols=20>$(cat liste | grep ROD110E)</TEXTAREA></td>
<td><INPUT TYPE="checkbox" NAME="chrodd" CHECKED onclick="vidtext('chrodd','rodd');"> Liste3<br><TEXTAREA name="rodd" rows=20 cols=20>$(cat liste | grep ROD110D)</TEXTAREA></td>
</tr></table></td></tr>

<tr valign="top"><td align="center" colspan="2"><INPUT TYPE="SUBMIT" name=" patch" VALUE="Patch!"></td></tr>
</table>
</FORM>
</body>


pour la deuxième question, le javascript s'éxécutant coté client (PC) tu ne peux pas faire de script bash

ou alors

- lors du chargement de la page tu "mémorise" dans une variable javascript le contenu de tes textarea et au check de la case tu le réécrit (un peu lourd !)

ou

- tu passes par de l'AJAX

c'est une fonctionnalité de javascript qui permet d'appeler un script sur le serveur (donc ton script bash cat etc..) et d'écrire la réponse dans la page (sans avoir besoin de la recharger )
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
3 août 2009 à 16:04
Merci Alain :-)

Je vais essayer le truc que tu m'a dis et je vais me renseigner sur les 2 choix que tu proposes :-)

Merci.

Cordialement,
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 août 2009 à 21:12
tiens une des solutions:

<HEAD>
<TITLE>Interface</TITLE>
<script type="text/javascript">
//variables de memorisation
var textarea1;
var textarea2;
var textarea3;
function vidtext (id_case,id_textarea,textarea){
	var variable=eval('textarea'+textarea); //creation nom variable en fct du textarea
	if (document.getElementById(id_case).checked==false){
			
       variable =document.getElementById(id_textarea).value; //on memorise avant d'effacer
		  document.getElementById(id_textarea).value="";
	}
	if (document.getElementById(id_case).checked==true){
		  document.getElementById(id_textarea).value=variable;
	}
	return variable;
}
</script>
</HEAD>
<BODY BGCOLOR="#EEEEEE">
<H1>Interface </H1>

<FORM ACTION="../patch.php" METHOD="POST">
<table valign=top bgcolor="#FFFFFF" align=center cellspacing=5 cellpadding=5 border=0>
<tr><td align=right>Utilisateur: 
<INPUT TYPE="radio" NAME="user" VALUE="user1"><br>
<INPUT TYPE="radio" NAME="user" VALUE="user2"></td><td>user1<br>user2</td></tr>

<tr valign="top"><td colspan="2">
<table border=0 cellspacing=0><tr BGCOLOR="#DDDDDD">
<td align="center" colspan="3">Liste</td></tr><tr BGCOLOR="#DDDDDD">
<td><INPUT TYPE="checkbox" NAME="chrodp" id="chrodp" CHECKED value="1" onclick="textarea1=vidtext('chrodp','rodp','1');"> Liste1<br><TEXTAREA name="rodp" id="rodp" rows=20 cols=20>$(cat liste | grep ROD110P)</TEXTAREA></td>
<td><INPUT TYPE="checkbox" NAME="chrode" id="chrode" CHECKED onclick="textarea2=vidtext('chrode','rode','2');"> Liste2<br><TEXTAREA name="rode" id="rode" rows=20 cols=20>$(cat liste | grep ROD110E)</TEXTAREA></td>
<td><INPUT TYPE="checkbox" NAME="chrodd" id="chrodd" CHECKED onclick="textarea3=vidtext('chrodd','rodd','3');"> Liste3<br><TEXTAREA name="rodd" id="rodd" rows=20 cols=20>$(cat liste | grep ROD110D)</TEXTAREA></td>
</tr></table></td></tr>

<tr valign="top"><td align="center" colspan="2"><INPUT TYPE="SUBMIT" name=" patch" VALUE="Patch!"></td></tr>
</table>
</FORM>
</body>


l'autre c'est avec AJAX
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
4 août 2009 à 15:08
Merci encore Alain :-)
Je vais essayer quand j'aurai un peu moins de boulot. Je reviendrai pour te dire si ça marche chez moi ou pas :-)

Merci.

Cordialement,
0

Discussions similaires