Remplacer un input par un textarea

Mehr
1 Monat 3 Wochen her - 1 Monat 3 Wochen her #193804 von 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
Letzte Änderung: 1 Monat 3 Wochen her von srauld.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LimeSurvey Partners
Mehr
1 Monat 3 Wochen her #193805 von Nickko
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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 3 Wochen her #193808 von srauld
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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 3 Wochen her #193814 von Nickko
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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 3 Wochen her #193817 von 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 .

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 3 Wochen her #193818 von srauld
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 3 Wochen her #193820 von DenisChenu

srauld schrieb: 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 .

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 2 Wochen her #193822 von srauld
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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 2 Wochen her #193825 von DenisChenu

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

DenisChenu schrieb: 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 .

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 5 Tage her #194603 von srauld
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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 5 Tage her #194604 von 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 .

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 5 Tage her #194612 von srauld
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Monat 5 Tage her #194619 von srauld
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
Folgende Benutzer bedankten sich: DenisChenu

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Moderatoren: Nickko

Jetzt loslegen!

Melden Sie sich jetzt an, und erstellen Sie in wenigen Minuten Ihre erste Umfrage.

Account einrichten

Abonnieren Sie unseren Newsletter

Abonnieren Sie unseren Newsletter für alle Neuigkeiten rund um LimeSurvey
captcha