Remplacer un input par un textarea

Más
1 mes 3 semanas antes - 1 mes 3 semanas antes #193804 por 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
Última Edición: 1 mes 3 semanas antes por srauld.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

LimeSurvey Partners
Más
1 mes 3 semanas antes #193805 por Nickko
Respuesta de Nickko sobre el tema 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.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 3 semanas antes #193808 por srauld
Respuesta de srauld sobre el tema 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.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 3 semanas antes #193814 por Nickko
Respuesta de Nickko sobre el tema 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.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 3 semanas antes #193817 por DenisChenu
Respuesta de DenisChenu sobre el tema 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)
$("#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 .

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 3 semanas antes #193818 por srauld
Respuesta de srauld sobre el tema 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

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 3 semanas antes #193820 por DenisChenu
Respuesta de DenisChenu sobre el tema Remplacer un input par un textarea

srauld escribió: 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 .

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 2 semanas antes #193822 por srauld
Respuesta de srauld sobre el tema 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.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 2 semanas antes #193825 por DenisChenu
Respuesta de DenisChenu sobre el tema Remplacer un input par un textarea

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

DenisChenu escribió: 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 .

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 5 días antes #194603 por srauld
Respuesta de srauld sobre el tema 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.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 5 días antes #194604 por DenisChenu
Respuesta de DenisChenu sobre el tema 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 .
An error happen ? Before make a new topic : remind the Debug mode .

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 5 días antes #194612 por srauld
Respuesta de srauld sobre el tema 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

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 5 días antes #194619 por srauld
Respuesta de srauld sobre el tema 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
El siguiente usuario dijo gracias: DenisChenu

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Moderadores: Nickko

¡Comenzar ahora!

Simplemente cree una cuenta y comience a usar LimeSurvey hoy mismo.

Registrarse ahora
¡Únase a nuestro boletín informativo!

Iniciar sesión