begin process at 2012 05 29 00:55:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

Bouton image qui appelle une fonction js


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Bouton image qui appelle une fonction js

jeudi 15 octobre 2009 à 12:02:16 | Bouton image qui appelle une fonction js

philreut

Bonjour,

j'ai un formulaire dynamique créé par une fonction js dans lequel je souhaite intégrer une possibilité de supprimer des entrées existantes. Cela fonctionne avec les lignes existantes, en positionnant un bouton "image" appelant la fonction de suppression.
Dans les lignes ajoutées au travers d'un script js, je souhaite rajouter le même bouton de suppression, et je dois construire ce bouton au travers d'un document.createElement(). J'ai essayé sans succès :
- avec un "button" simple (tout gris tout moche), c'est le formulaire entier qui est validé !
- avec une "img", rien ne se passe, pourtant, lorsque je fais la même chose en "dur" pour les lignes existantes au départ, cela fonctionne...
Je ne sais pas comment régler mon problème.

Voici la fonction de suppression qui fonctionne
function suppr_ligne(index) { document.getElementById(index).parentNode.removeChild(document.getElementByI d(index));
document.getElementById(index).parentNode.removeChild(document.getEl ementById(index));
document.getElementById(index).parentNode.removeChild(docume nt.getElementById(index));
document.getElementById(index).parentNode.removeChil d(document.getElementById(index));
}

Voici mon code HTML
<td><input type="image" id="id_truc" src="img/suppr.jpg" onClick="suppr_ligne(id_truc)"></td>

Dans la génération du formulaire dynamique, voici la déclaration js de la ligne ci-dessus, mais qui est récalcitrante... et sur laquelle j'ai besoin d'aide ! j'intègre cela dans une table et l'image apparait bien, mais elle n'est pas "cliquable"...
...
myButonSup = document.createElement("img");
myButonSup.id = id_truc;
myButonSup.src = "img/suppr.jpg";
myButonSup.border = 0;
myButonSup.onClick = function() { suppr_ligne(id_truc); };
...

En remercient ceux ou celles qui pourront me venir en aide !

Philreut
jeudi 15 octobre 2009 à 12:07:40 | Re : Bouton image qui appelle une fonction js

kazma

Administrateur CodeS-SourceS
bonjour

onclic avec un c minuscule

myButonSup.onclick = function() { suppr_ligne(id_truc); };
jeudi 15 octobre 2009 à 13:23:49 | Re : Bouton image qui appelle une fonction js

philreut

OK, j'ai corrigé, mais cela n'a pas d'effet. Je n'ai pas de changement de curseur quand je suis sur l'image : il reste ne détecte pas que c'est une "zone d'action" (il n'affiche pas la fameuse 'main').

Une autre suggestion ?
jeudi 15 octobre 2009 à 13:36:59 | Re : Bouton image qui appelle une fonction js

Bul3

Membre Club
>>OK, j'ai corrigé, mais cela n'a pas d'effet
c'est qu'il y a une autre erreur alors !
( "id_truc" ??? )
kazma a donné la solution, mais
comme vous ne nous montrez pas tout....
ch'tiot excemple ?
Code HTML :
<body>
	<div id="aj">&nbsp;</div>
	<script>
		var myButonSup = document.createElement("img");
		myButonSup.id = "id_truc";
		myButonSup.src = "suppr.jpg";
		myButonSup.border = 0;
		myButonSup.onclick = function() { alert(this); 	}
		document.getElementById("aj").appendChild(myButonSup);
	</script>
</body>

jeudi 15 octobre 2009 à 13:44:40 | Re : Bouton image qui appelle une fonction js

philreut

Bon, alors voici mon code (attention, j'utilise smarty, donc pas de codes PHP et les variables telles que {$xxxx} )

{literal}

<script language="JavaScript" type="text/javascript">



var rowExist=parseInt({/literal}'{$nbLi}'{literal})+1;



var nextRow;

function ajout_ligne(table, typePresta) {

if (nextRow == null) nextRow = rowExist ;

//alert(nextRow);

//On va créer 5 colonnes

myColumnIndex = document.createElement("td");

myColumnLibelle = document.createElement("td");

myColumnQte = document.createElement("td");

myColumnPU = document.createElement("td");

myColumnType = document.createElement("td");

myColumnSup = document.createElement("td");

//A la colonne index, on lui ajoute un enfant. Cet enfant sera simplement du text (createTextNode), en l'occurence, l'index de la ligne

myColumnIndex.appendChild(document.createTextNode(nextRow));



//On va créer l'input du libellé de la prestation

myInputLibelle = document.createElement("input");

myInputLibelle.id = 'libelle_' + nextRow; //On définit l'id de notre input

myInputLibelle.name = myInputLibelle.id; //On définit le name de l'input - Dans notre cas, c'est le même que l'id

myInputLibelle.size = 80; //On définit la taille de l'input

myInputLibelle.maxlength = 100; //On définit la taille max de l'input

myInputLibelle.value = myInputLibelle.id;

//A la colonne prestation, on lui ajoute un enfant. Cet enfant sera simplement le input que l'on vient de créer

myColumnLibelle.appendChild(myInputLibelle);



myInputQte = document.createElement("input");

myInputQte.id = 'qte_' + nextRow;

myInputQte.name = myInputQte.id;

myInputQte.maxlength = 6;

myInputQte.value = 0;

//On ajoute l'input aux enfants de la colonne qte

myColumnQte.appendChild(myInputQte);



myInputPU = document.createElement("input");

myInputPU.id = 'puttc_' + nextRow;

myInputPU.name = myInputPU.id;

myInputPU.maxlength = 6;

myInputPU.value = 0;

//On ajoute l'input aux enfants de la colonne PU

myColumnPU.appendChild(myInputPU);



myInputType = document.createElement("input");

myInputType.id = 'type_' + nextRow;

myInputType.name = myInputType.id;

myInputType.type = 'hidden';

myInputType.value = typePresta;

//On ajoute l'input aux enfants de la colonne Type

myColumnType.appendChild(myInputType);



// On créé le bouton suppression





myButonSup = document.createElement("img");

myButonSup.id = nextRow;

myButonSup.src = "img/suppr.jpg";

myButonSup.border = 0;

myButonSup.href = "#";

myButonSup.onclick = function() { suppr_ligne(nextRow); };



//On créer une ligne: tr

myRow = document.createElement("tr");

myRow.id = 'ligne_' + nextRow;

//On lui ajoute 5 enfants (les 5 colonnes)

//myRow.appendChild(myColumnIndex);

myRow.appendChild(myColumnLibelle);

myRow.appendChild(myColumnQte);

myRow.appendChild(myColumnPU);

myRow.appendChild(myColumnType);

myRow.appendChild(myButonSup);



//On récupère notre conteneur

myTable = document.getElementById(table);

//On lui ajoute un enfant: la ligne (cette ligne contient 5 enfants - 5 td - qui eux mêmes contiennent des enfants, etc....)

myTable.appendChild(myRow);



nextRow = nextRow+1;

}





function suppr_ligne(index) {

document.getElementById(index).parentNode.removeChild(document.getElementById(index));

document.getElementById(index).parentNode.removeChild(document.getElementById(index));

document.getElementById(index).parentNode.removeChild(document.getElementById(index));

document.getElementById(index).parentNode.removeChild(document.getElementById(index));

}



</script>

{/literal}



<!-- début tpl list -->



<form method="POST" action="modif_fact_maj.php">

<div>

<table>

<tr>

<td>Facture n°<b>{$idFactToModif}</b> du client <b>{$nom} {$prenom}</b> avec {$nbLi} prestations.</td>

</tr>

<tr>

<td>Date de la Facture :<input size=8 style="text-align:center;" value={$date} name="newDate"></td>

</tr>



</table>

</div>

<br>

<br>

<div>

<table>

<tr>

<td><h4>Prestations</h4></td>

</tr>

{section loop=$prestaPrestaP name=idx}

<tr>

<td><input value="{$prestaPrestaP[idx].libelle}" id="{$prestaPrestaP[idx].id_prestation}" name="newLibelleP_{$prestaPrestaP[idx].id_prestation}" size=80></td>

<td><input style="text-align:right;" id="{$prestaPrestaP[idx].id_prestation}" value="{$prestaPrestaP[idx].id_prestation}" name="newQteP_{$prestaPrestaP[idx].id_prestation}" ></td>

<td><input style="text-align:right;" id="{$prestaPrestaP[idx].id_prestation}" value="{$prestaPrestaP[idx].puttc}" name="newPuttcP_{$prestaPrestaP[idx].id_prestation}" ></td>

<td><input type="image" id="{$prestaPrestaP[idx].id_prestation}" src="img/suppr.jpg" onClick="suppr_ligne({$prestaPrestaP[idx].id_prestation})"></td>

</tr>

{/section}

</table>



<a href="#" onClick="ajout_ligne('tablePR', 'P')"><img src="img/ajout.jpg" border=0></a>

<table id="tablePR"></table>

<br>



<table>

<tr>

<td><h4>Main d'Oeuvre</h4></td>

</tr>

{section loop=$prestaPrestaMo name=truc}

<tr>

<td><input value="{$prestaPrestaMo[truc].libelle}" id="{$prestaPrestaMo[truc].id_prestation}" name="newLibelleMo_{$prestaPrestaMo[truc].id_prestation}" size=80></td>

<td><input style="text-align:right;" id="{$prestaPrestaMo[truc].id_prestation}" value="{$prestaPrestaMo[truc].id_prestation}" name="newQteMo_{$prestaPrestaMo[truc].id_prestation}"></td>

<td><input style="text-align:right;" id="{$prestaPrestaMo[truc].id_prestation}" value="{$prestaPrestaMo[truc].puttc}" name="newPuttcMo_{$prestaPrestaMo[truc].id_prestation}"></td>

<td><input type="image" id="{$prestaPrestaMo[truc].id_prestation}" src="img/suppr.jpg" onClick="suppr_ligne({$prestaPrestaMo[truc].id_prestation})"></td>

</tr>

{/section}

</table>



<a href="#" onClick="ajout_ligne('tableMO', 'M')"><img src="img/ajout.jpg" border=0></a>

<table id="tableMO"></table>



<br>

</div>

<br>

<div>

<table>

<tr>

<td><INPUT border=0 src="img/enreg.jpg" type=image Value=send align="middle" ></td>

<td><a href="liste_factures.php"><img src="img/annul.jpg" border=0></a></td>

</tr>

</table>

</div>

</form>



<!-- fin tpl list -->
jeudi 15 octobre 2009 à 14:25:02 | Re : Bouton image qui appelle une fonction js

Bul3

Membre Club

>>donc pas de codes PHP et les variables telles que {$xxxx}
ah bon ?
je lisais : Smarty est un moteur de template pour PHP !
quelque part, s'il n'y a pas de php, je ne comprend plus...

vous n'êtes probablement pas obligé de nous
mettre toute votre "page" non plus !
c'est typique, ça.
dans un 1er temps, on a trop peu d'infos
( kazma a parfaitement répondu mais il semble
que d'autres erreurs existent ), et dans un 2ème
temps : tiens v'la tout et débrouillez vous
( mais sans avoir ce qu'il faut pour tester néanmoins !
base de données, par exemple )
moi ça me décourage, je vais laisser
kazma sur ce coup là.
jeudi 15 octobre 2009 à 14:53:46 | Re : Bouton image qui appelle une fonction js

philreut

Ben si le code PHP n'est pas dans ce fichier...
Je pensais que tout le fichier pouvait vous éclairer...
Merci du coup de main !
Néanmoins, j'ai eu des réponses par ailleurs ainsi que la solution (pour ceux qui auraient éventuellement les mêmes pb que moi...)

Déclaration de l'objet :
myButonSup = document.createElement("input");
myButonSup.setAttribute("type", "image" );
myButonSup.setAttribute("id", nextRow);
myButonSup.setAttribute("src", "img/suppr.jpg");
myButonSup.border = 2;
myButonSup.onclick = function() { suppr_ligne(this); };


La fonction qui va avec :
function suppr_ligne(obj) {
while(obj && obj.tagName.toLowerCase() != 'tr') obj = obj.parentNode; // On remonte l'arborescence DOM pour trouver la ligne dans laquelle est l'objet
// Maintenant obj est la ligne à supprimer
if(obj) obj.parentNode.removeChild(obj); // On supprime la ligne du tableau

}



Cette discussion est classée dans : bouton, fonction, document, index, getelementbyid


Répondre à ce message

Sujets en rapport avec ce message

Fonction et bouton radio [ par isu_san ] Bonjour je m'expliquej'ai un formulaire avec un choix entre deux options, j'ai donc mis deux cases a cocher avec le meme nom<input type="radio" value= Problème avec la fonction switch [ par stiml ] Bonjour, Je sais qu'on a posté plusieurs questions sur ce sujet mais je n'est pas trouvée ma réponseMerci de m'éclairer sur cette fonction qui ne fonc syntaxe pour passage de variable dans une fonction [ par sokhay3 ] bonjour, mon probleme est le suivant j'ai une serie de checkbox et text, et je souhaiterais que lorsque l'utilisateur coche une case , un message spec Fonction simple qui ne marche pas sous Firefox [ par Evangun ] Bonjout à tous, dans la série "le javascript s'acharne contre moi" , voici une fonction qui marche sous IE et pas Firefox, et elle est tellement simpl bug sous firefox [ par freija ] Bonjour, Pour faire un site internet on m'a fourni une base. Mon index se présente sous la forme d'un tableau avec sur une ligne un menu flash, et un Problème avec REGEX sous IE [ par death83 ] Salut a tous,je suis entrain de faire un petit script qui fonctionne bien sauf sur IE. J'ai une fonction qui permet la génération automatique d'un tex activer-désactiver une liste déroulante selon le bouton radio coché [ par jesscolor83 ] Bonjour,en fait je veux que selon le bouton radio coché, je veux faire apparaitre une liste déroulante. Le problème est que dès que je coche le second fonction pour afficher ou chacher mon menu [ par chapata ] Hello ,je galère sur une fonction que j'ai crée, rien de méchant mais plutot un problème sur le nombre de sous menu :j'ai un menu du style :<br Ajout/suppression d'un champs de formulaire [ par maelob ] Bonjour tout est dans le titre, un bouton ajout qui ajout un input text et un bouton. et ce dernier bouton ajouter permet d'enlever l'input crée ainsi fonction getElementById qui ne fonctionne pas... [ par Also know as ] Bonjour à tous !Voilà j'ai un petit soucis sur un fonction javascript que j'ai créée mais celle-ci ne fonctionne pas sous Internet Explorer et Opera.f


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales