Créer un input type Button avec une onClick !

[Résolu]
Signaler
Messages postés
41
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
30 mai 2009
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour à tous,
voila j'essai de créer un bouton input de tupe button qui declanche une autre fonction.
étant impribré dans un formulaire dynamique je doit gérer une incrémentation :

mon problème se pose sur : newButton.onClick='fAddText('.$i.')';  
car je doit créer un boutton adapter au reste de mon code php.

code de ma fonction :

function fAddReste(nb_ques) //Ajout de zone text increment (nb_ques = $i)
{
var newButton= document.createElement("input");
newButton.type='button';
newButton.value='+';
newButton.onClick='fAddText('.$i.')';         <== Normalement, ici le code php est :
                                                                          echo '

var newInput= document.createElement("input");
newInput.type='text';
newInput.value='rep_'+nb_ques+'_1'; //permet de visualiser le rsultat
newInput.name='rep_'+nb_ques+'_1';
newInput.id='rep_'+nb_ques+'_1';

document.getElementById('choix_'+nb_ques).appendChild(document.createElement("br"));
document.getElementById('choix_'+nb_ques).appendChild(newButton);
document.getElementById('choix_'+nb_ques).appendChild(document.createElement("br"));
document.getElementById('choix_'+nb_ques).appendChild(document.createTextNode('Réponse 1 : '));
document.getElementById('choix_'+nb_ques).appendChild(newInput);
}

Mon bouttone st bien créer mais pas de fonction associer au onClick.

cela doit être simple, mais étant un nb en javascript je galère,
Merci

5 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

   très loin d'être sûr que les relations php <==> javascript
         soient faites de manière correcte... mais si on suppose que oui,
         alors :

newButton.onclick=function() { fAddText('<?php echo $i;?>'); }

<hr />
                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
41
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
30 mai 2009

Merci, sa marche nikel !

j'ai juste mis directement la valeur de $i avec :

function fAddText2(nb_ques) //Ajout de zone text increment
{
var newButton= document.createElement("input");
newButton.type='button';
newButton.value='+';
newButton.onclick = function() { fAddText(nb_ques); }

Bref sa tue
Messages postés
41
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
30 mai 2009

C'est bon  j'ai trouvé :)

la solution : newInput.onfocus = function() { this.value=''; }

comme quoi ca rigole pas avec les majuscule en JS ^^
Messages postés
41
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
30 mai 2009

Dans le même style de création de input avec appendChild,
j'aiemerait créer un champ texte avec un value par defaut et surtout un onFocus pour supprimé le texte defaut au click

je pensais à :

function fAddText(nb_ques) //Ajout de zone text increment
{
var cmp = new String(GetQues(nb_ques));    //recuperation du nom dans une variable string
var newInput= document.createElement("input");
newInput.type='text';
newInput.value='rep_'+nb_ques+'_'+cmp; //permet de visualiser le rsultat
newInput.name='rep_'+nb_ques+'_'+cmp;
newInput.id='rep_'+nb_ques+'_'+cmp;
newInput.onFocus = function() { this.value=''; }

document.getElementById('choix_'+nb_ques).appendChild(document.createElement("br"));
document.getElementById('choix_'+nb_ques).appendChild(document.createTextNode('Réponse '+cmp+' : '));
document.getElementById('choix_'+nb_ques).appendChild(newInput);
}

je me base sur le code html trouvé sur le net et je pense que mon approche de la function n'est pas la bonne.
Merci de m'aider
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
c'est plutôt qu'on ne peut ajouter un évênement, comme tu veux le faire,
        que lorsque l'appendChild est fait. sinon l'élément n'existe pas encore.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]