Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Remplacer un input par un textarea

  • srauld
  • srauld's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
4 years 2 months ago - 4 years 2 months ago #193804 by srauld
Remplacer un input par un textarea was created by 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 ?
Code:
<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
Last edit: 4 years 2 months ago by srauld.
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 2 months ago #193805 by Nickko
Replied by Nickko on topic 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.
The topic has been locked.
  • srauld
  • srauld's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
4 years 2 months ago #193808 by srauld
Replied by srauld on topic 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.
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 2 months ago #193814 by Nickko
Replied by Nickko on topic 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.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 2 months ago #193817 by DenisChenu
Replied by DenisChenu on topic Remplacer un input par un textarea
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)
Code:
$("#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 .
I don't answer to private message.
The topic has been locked.
  • srauld
  • srauld's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
4 years 2 months ago #193818 by srauld
Replied by srauld on topic 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
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 2 months ago #193820 by DenisChenu
Replied by DenisChenu on topic Remplacer un input par un textarea

srauld wrote: 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 .
I don't answer to private message.
The topic has been locked.
  • srauld
  • srauld's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
4 years 2 months ago #193822 by srauld
Replied by srauld on topic 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.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 2 months ago #193825 by DenisChenu
Replied by DenisChenu on topic Remplacer un input par un textarea

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

DenisChenu wrote: 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 .
I don't answer to private message.
The topic has been locked.
  • srauld
  • srauld's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
4 years 1 month ago #194603 by srauld
Replied by srauld on topic 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.
Code:
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.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
4 years 1 month ago #194604 by DenisChenu
Replied by DenisChenu on topic Remplacer un input par un textarea
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 .
I don't answer to private message.
The topic has been locked.
  • srauld
  • srauld's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
4 years 1 month ago #194612 by srauld
Replied by srauld on topic 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 à
Code:
$( "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
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose