[javascript] checkbox textarea

Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -  
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   62
 
Faudrait faire un genre de if(chekbox.checked), alors ca envoie ton texarea ! (javacript ?)
0
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   5
 
Personne ne saurait faire ça ?

Merci.

Cordialement,
0
resalut Messages postés 784 Date d'inscription   Statut Membre Dernière intervention   55
 
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   Statut Membre Dernière intervention   5
 
Bah le code et l'explication ça sera l'idéal :-)

Merci.

Cordialement,
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
<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   Statut Membre Dernière intervention   52
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   5
 
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