Effacer un champ si checkbox est cochée [Résolu]

mailliam 262 Messages postés mardi 2 juillet 2002Date d'inscription 10 mars 2014 Dernière intervention - 26 mai 2010 à 17:23 - Dernière réponse : mailliam 262 Messages postés mardi 2 juillet 2002Date d'inscription 10 mars 2014 Dernière intervention
- 12 juin 2010 à 18:59
Boujour à tous!

voila moi j'ai un formulaire généré par une boucle php, tant qu'il y a des noms dans une base de donnée mon formulaire s'allonge.
J'aimerais un bouton qui puisse effacer le contenu des champs de text qui sont checké..

Donc j'ai mes champs text dont les noms sont quoi1, quoi2, quoi3...
suivi des checkbox dont les noms sont toujours "choix" mais les values sont 1, 2, 3...

function effacer()
{
if (document.forms["planning"].elements["choix"].checked){
document.forms["planning"].elements["quoi[0]"].value = ""
}
}

<form name="planning">
$indice = 1;


$indice++;


</form>
(j'ai pas écris ici la boucle php car pas très utile..)

ca marche pô


Le pire c'est que si je fais un bouton sans passer par ma fonction, ca marche:


Si qqun à une idée :)
Merci d'avance
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
medabdeljalil 2 Messages postés mardi 16 mars 2010Date d'inscription 26 mai 2010 Dernière intervention - 26 mai 2010 à 21:04
3
Merci
bonjour ???? voila le code corriger
<head>
<script language="javascript">
function effacer()
{
if (document.forms["planning"].elements["choix"].checked)
{
document.forms["planning"].elements["0"].value = "";
}
}</script></head>

<form name="planning">
<? $indice = 0; ?>
" VALUE="">
" />
<? $indice++; ?>




</form>

Merci medabdeljalil 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de medabdeljalil
Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 26 mai 2010 à 23:01
3
Merci
tout compte fait tu n'as pas besoin de mettre de NAME à tes CHECKBOXs. Je m'explique...
lors de l'appui sur le bouton tu parcours toutes les éléments de la FORM et si il est checked ALORS tu effaces l'INPUT dont le NAME est dans la value du CHECKBOX, c'est ce que l'on voit dans ton exemple.
Ta fonction Effacer est donc à modifier en conséquence.
;O)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de PetoleTeam
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 26 mai 2010 à 19:03
0
Merci
Bonjour,
...checkbox dont les noms sont toujours "choix"...
ça c'est une vrai mauvaise idée, il te faut pour commencer des NAMEs différents pour tes CHECKBOXs...
;O)
Commenter la réponse de PetoleTeam
mailliam 262 Messages postés mardi 2 juillet 2002Date d'inscription 10 mars 2014 Dernière intervention - 27 mai 2010 à 20:42
0
Merci
RE hello les Loulous!

En fait en faisant:
function effacer()
{
if (document.forms["planning"].elements["choix"].checked)
{
document.forms["planning"].elements["0"].value = "";
}
}
ca marchait pas car il y a plusieurs checkbox qui s'appellent 'choix'
en ajoutant une checkbox toute seule avec un autre nom la fonction marche bien..

Alors j'ai mis:
if (document.forms["planning"].elements[5].checked)
je l'ai appelé par son indice en fait et ca marche nickel

Mais merci pour vos réponses rapides! Ché cool
Commenter la réponse de mailliam
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 28 mai 2010 à 19:08
0
Merci
Bonjour,
ta solution n'est valable que pour UN SEUL champ et non comme tu le souhaitais plusieurs...
J'aimerais un bouton qui puisse effacer le contenu des champs de text qui sont checké..


;O)
Commenter la réponse de PetoleTeam
mailliam 262 Messages postés mardi 2 juillet 2002Date d'inscription 10 mars 2014 Dernière intervention - 29 mai 2010 à 18:08
0
Merci
Coucou,

Oui j'avais pas vu tout de suite ce détail :/
j'essaie justement de modifier ma fonction pour que ca effaces l'INPUT dont le NAME est dans la value du CHECKBOX comme tu disais, mais je crois que je suis obligé de faire des NAME différents

Ce qui m'embête car en fait je suis obligé de les appeler toutes 'choix' car j'ai fait une autre fonction, ou il y a une checkbox qui coche toutes les autres (toutes celles qui ont name='choix')
voici cette fonction:
function selectall(cas,choix){
//test si on a plusieur ligne
if(choix.length>0){
if (cas.checked){
for (var i=0; i<choix.length;i++){
choix[i].checked=true
}
}
else{
for (var i=0; i<choix.length;i++){
choix[i].checked=false
}
}
}
else{
if (cas.checked){
choix.checked=true
}
else{
choix.checked=false
}
}
}

Comment je peux faire pour que les 2 fonctionne ensemble?

Merci pour ton aide en tout k!
Commenter la réponse de mailliam
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 29 mai 2010 à 22:05
0
Merci
Bonjour,
concernant ta fonction selectall, il est effectif qu'en passant par un name commun cela simplifie les choses, même si une fois cochés les données de ce cochés seront transmises par le submit.
Tu peux néanmoins simplifier ta function comme ceci
//------------------------
function selectall( this_){
  //-- Recup. reference de la FORM
  var O_Form = document.forms["planning"];
  //-- Recup etat de la CHECKBOX
  var bChecked = this_.checked;
  //-- Recup des elements CHECKBOX choix
  var O_Check = O_Form.elements['choix'];
  //-- Affecte etat aux elements CHECKBOX choix
  for( var i =0; i < O_Check.length; i++) {
    O_Check[i].checked = bChecked;
  }
}
avec un appel du type



maintenant dans le même style tu peux avoir une fonction efface qui pourrait ressembler à cela
//----------------
function effacer(){
  //-- Recup. reference de la FORM
  var O_Form = document.forms["planning"];
  //-- Recup des elements CHECKBOX choix
  var O_Check = O_Form.elements['choix'];
  //-- Parcours pour effacement
  for( var i =0; i < O_Check.length; i++){
    //-- Si checkbox coche
    if( O_Check[i].checked){
      //-- Recup. du name dans la value
      var szId = O_Check[i].value;
      //-- Efface l'input correspondant
      O_Form.elements[szId].value = "";
    }
  }
}

voila une façon de procéder...
;O)
Commenter la réponse de PetoleTeam
mailliam 262 Messages postés mardi 2 juillet 2002Date d'inscription 10 mars 2014 Dernière intervention - 30 mai 2010 à 11:33
0
Merci
Re Salut!

merci pour ton implication! :)

que veut dire exactement for( var i =0; i < O_Check.length; i++) dans la fonction effacer?

la fonction selectall marche nickel, mais pas effacer :(
et du coup je trouve pas l'erreur..

mais sinon tant pis, ne te prend pas trop la tête, je vais pas mettre cette fonction, je fini mon site et j'y reviendrai + tard..
Commenter la réponse de mailliam
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 12 juin 2010 à 18:09
0
Merci
Bonjour,
en mettant de l'ordre je retombe sur ce zappage complet, 1000 EXCUSES

que veut dire exactement for( var i =0; i < O_Check.length; i++) dans la fonction effacer?
O_Ckeck contient une liste de TOUS les éléments choix
O_Check.length représente la longueur de cette liste, donc on parcours tous les éléments, sachant qu'un tableau démarre à l'indice 0.

la fonction selectall marche nickel, mais pas effacer
je viens de reprendre le code et je n'ai pas de problème !!!!

;O)
Commenter la réponse de PetoleTeam
mailliam 262 Messages postés mardi 2 juillet 2002Date d'inscription 10 mars 2014 Dernière intervention - 12 juin 2010 à 18:59
0
Merci
Tchô!

c'est tout bon ca marche bien :)

merci en tout k!
A++
Commenter la réponse de mailliam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.