Remplacer un input par un textarea

Plus d'informations
il y a 1 mois 4 semaines - il y a 1 mois 4 semaines #193804 par srauld
Bonjour,

Je souhaite remplacer un input par un textarea au sein d'un tableau de type Texte mais le code ci-dessous ne fonctionne quand je l'insère via l'editeur :
Pouvez-vous me dire pourquoi car cela fonctionne dans une console JS ?
Pouvez-vous aussi me dire comment récupérer les codes des sous-questions ?
<script type="text/javascript" charset="utf-8">
$('td.answer_cell_COMMENTAIRES').each(function(i) { 
$textarea = $("<textarea>");
$textarea.attr("cols",57);
$textarea.attr("rows",12);
$textarea.attr("value","");
  i = i+1;
$('input#answer561562X9X61OFFRE'+i+'_COMMENTAIRES').replaceWith($textarea);
   });
</script>

Merci pour votre réponse
Dernière édition: il y a 1 mois 4 semaines par srauld.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193805 par Nickko
Réponse de Nickko sur le sujet Remplacer un input par un textarea
Déjà, il faudrait préciser ce que tu entends par "ne fonctionne pas" et dire quelle version de Limesurvey tu utilises.

Nickko
Head of ergonomics, UX & UI.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193808 par srauld
Réponse de srauld sur le sujet Remplacer un input par un textarea
J'utilise la version 3.22.2+200204.
Les inputs visés ne sont pas transformés en Textarea.
Le code fonctionne sans la fonction each. J'arrivais donc à remplacer le premier input mais j'aimerai le faire sur l'ensemble des input de cette colonne.

Merci pour votre réponse.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193814 par Nickko
Réponse de Nickko sur le sujet Remplacer un input par un textarea
Je suis un peu rouillé en Javascript mais quand je regarde ton code, ce fameux each me semble bizarre, pourquoi avoir une fonction à l'intérieur, et qu'est-ce que cette variable "i" ?

Tu créé une fonction qui reçoit un paramètre i mais je ne vois pas où tu le défini.

Je pense que tu as un problème d'algorithme.

As-tu posé en français sur un coin de papier la logique de ton code ?
Je pense que ça pourrait t'aider.

Nickko
Head of ergonomics, UX & UI.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193817 par DenisChenu
Les identifiant vont être trouvable avec
{SGQ}CodeX_CodeY

Donc tu peux te servir de api.jquery.com/attribute-ends-with-selector/

Soit (non testé mais ca doit le faire)
$("#question{QID} [id$='_SY2']").each(function(){
    var newElement = $("<textarea/>",{
        id: $(this).attr("id"),
        name: $(this).attr("name"),
        class: $(this).attr("class"),
    }).val($(this).val());
    $(this).replaceWith(newElement);
}

Tu remarquerta que je fait attention à garder les valeurs précédente, le nom (ce qui sera soumis) la classe (pour le look), l'id pour le javascript .... etc ....

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
An error happen ? Before make a new topic : remind the Debug mode .

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193818 par srauld
Réponse de srauld sur le sujet Remplacer un input par un textarea
le i correspond à chaque td ayant la class answer_cell_COMMENTAIRES.

Pour chacune de ces td je remplace un input identifié par une classe comprenant ce i justement (OFFRE1, OFFRE 2, etc).
Mon algorithme fonctionne dans une console JS . Par contre je me base sur des classes qui ne sont peut être pas encore générées au moment du traitement de ce code par Ajax ??
Si c'est le cas comment procéder ?
Pouvez-vous me donner les codes correspondants à chaque sous-question d'un tableau ? J'ai essayé ceci mais sans succès : {SGQ}Y001_X004
Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193820 par DenisChenu

srauld écrit: Pouvez-vous me donner les codes correspondants à chaque sous-question d'un tableau ? J'ai essayé ceci mais sans succès : {SGQ}Y001_X004

C'est à adapter en fonctions de test codes de sous questions
Voir : manual.limesurvey.org/Expression_Manager#Qcode_Variable_Naming

En sachant que {SGQ} sera remplace par 561562X9X61 dans ton example.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
An error happen ? Before make a new topic : remind the Debug mode .

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193822 par srauld
Réponse de srauld sur le sujet Remplacer un input par un textarea
Oui, j'ai bien le remplacement de {SGQ} par la suite alphanumérique mais par contre je n'arrive pas à récupérer les valeurs correspondantes aux sous-questions. Y001 ne serait donc pas la variable correspondant à la 1ère sous-question en Y du tableau et idem pour le X ?
Faut-il que je reprenne les valeurs que j'ai mentionné quand j'ai créé le tableau ?

Merci pour votre réponse.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 4 semaines #193825 par DenisChenu

srauld écrit: Faut-il que je reprenne les valeurs que j'ai mentionné quand j'ai créé le tableau ?

DenisChenu écrit: C'est à adapter en fonctions de test codes de sous questions
Voir : manual.limesurvey.org/Expression_Manager#Qcode_Variable_Naming


Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
An error happen ? Before make a new topic : remind the Debug mode .

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 1 semaine #194603 par srauld
Réponse de srauld sur le sujet Remplacer un input par un textarea
Bonjour,

Je n'arrive toujours pas à obtenir le remplacement de mon input par un textarea.
Mon script fonctionne en console JS mais quand je le mets dans le source de mon formulaire rien ne se fasse.
var index = 1;  
$("#question"+qID+" table.ls-answers tr td.answer_cell_COMMENTAIRES").each(function()  { 
$("input[id='answer641792X9X61OFFRE"+ index +"_COMMENTAIRES']").replaceWith("<textarea name='answer641792X9X61OFFRE"+ index +"_COMMENTAIRES' cols='57' rows='12' value=''></textarea>");
 
index = index +1;
 
 
   });
J'ai l'impression que la fonction each ne fonctionne pas. J'ai essayé de contourner le problème en sélectionnant l'input en fonction de la composition de son id mais celui-ci doit commencer par "answer" et finir par "COMMENTAIRES" et je n'arrive pas à trouver la bonne syntaxe pour cela.

Pouvez-vous m'aider ?

Merci pour votre réponse.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 1 semaine #194604 par DenisChenu
Vu que j'ai l'impression que tu ne lis aucun de mes conseils (en tous cas : tu ne les applique pas ) ... je laisse tomber.

Et puis pourquoi doit commencer par answer ??? suffit deprendre les input:text ...

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
An error happen ? Before make a new topic : remind the Debug mode .

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 1 semaine #194612 par srauld
Réponse de srauld sur le sujet Remplacer un input par un textarea
Bonjour,

Si au contraire, j'ai lu vos conseils et je les ai appliqués mais j'arrive au même résultat. Je suis donc allée sur le lien que vous m'aviez donné api.jquery.com/attribute-ends-with-selector/. Il existe un input avec un id commençant par java et finissant par COMMENTAIRES dans l'HTML, je peux donc utiliser cette fonction qu'en l'associant à
$( "input[id^='answer']" )

J'ai 15 champs similaires sur mon formulaire leur identifiant comprend donc un nombre qui est incrémenté pour chacun d'entre eux d'où ma variable index.

Merci pour votre réponse

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 1 semaine #194619 par srauld
Réponse de srauld sur le sujet Remplacer un input par un textarea
Bonjour,

J'ai trouvé comment afficher mes textearea pour chaque ligne. Voic le code utilisé :
$("#question"+qID+" table.ls-answers tr td.answer_cell_COMMENTAIRES").ready(function()  { 
name = $("input[id$='COMMENTAIRES'][id^='answer']").attr('id');
$("input[id$='COMMENTAIRES'][id^='answer']" ).val( name );
 
$("input[id$='COMMENTAIRES'][id^='answer']").replaceWith("<textarea name='"+ name +"' cols='57' rows='12' value=''></textarea>");
 
   });
 
   });

Bonne journée
Les utilisateur(s) suivant ont remercié: DenisChenu

Connexion ou Créer un compte pour participer à la conversation.

Modérateurs: Nickko

Commencez dès maintenant !

Créez simplement un compte et commencez à utiliser LimeSurvey dès aujourd'hui.

Inscrivez-vous maintenant

Inscrivez-vous à notre Newsletter!