Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1
  • 2

TOPIC: Comparaison de deux valeurs numérique dans une même question

Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #75958

  • darknico84
  • darknico84's Avatar
  • OFFLINE
  • Senior Lime
  • Posts: 60
  • Karma: 0
Bonjour,

Dans mes expérimentations limesurveyienne, j'aimerais pour des réponses multiples numériques pouvoir comparer les deux valeurs au moment de la validation. Ainsi si la première valeur entrée est inférieure à la seconde je balance un message d'erreur. Le truc c'est qu'avec le code suivant il ne se passe pas grand chose :

<script type="text/javascript" charset="utf-8">
function validation()
{
if ({INSERTANS:51145X130X6212SQ001}<{INSERTANS:51145X130X6212SQ02})
{
alert("Cela n est pas possible");
}
}
setTimeout("validation()",250);
</script>


ça ne fonctionne pas non plus avec les balises d'ouverture <script> ou <script LANGUAGE=javascript>

Où me trompe-je ? Ou cela n'est-il pas possible ainsi.

Si d'aventure vous avez des idées n'hésitez pas.

Merci d'avance.

Nicolas
The administrator has disabled public write access.

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #75961

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 6272
  • Thank you received: 800
  • Karma: 240
Salut,

Les INSERTANS ne servent que sur les pages suivantes.

Ici, les INSERTANS ne sont pas encore remplis, il faut donc utiliser les valeurs des champs de saisie.

Je pense qu'il va falloir faire un truc du genre:
<script type="text/javascript" charset="utf-8">
 $(document).ready(function() {
   $('#movenextbtn, #movesubmitbtn').click(function(){
     if ($('#answerSSSSXGGGGXQQQQsubQ1')<$('#answerSSSSXGGGGXQQQQsubQ2'))
     {
       alert ('Cela n\'est pas possible');
       return false;
     }
     else
     {
       return true;
     }
   });
});
</script>
Last Edit: 2 years 5 months ago by DenisChenu.
The administrator has disabled public write access.
The following user(s) said Thank You: darknico84

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #75981

  • darknico84
  • darknico84's Avatar
  • OFFLINE
  • Senior Lime
  • Posts: 60
  • Karma: 0
Merci beaucoup pour toutes ces informations. Je vais tester cela ce soir quand je ne passerai plus par un proxy car pour le moment ça ne change pas grand chose.
Pour ma culture perso, le "sub" entre le numéro de question et le numéro de réponse indique que l'on veut le résultat soumis par l'utilisateur ? (j'ai testé avec ou sans sub)

Voilà donc à quoi devrait ressembler mon code
<script type="text/javascript" charset="utf-8">
 $(document).ready(function() {
   $('#movenextbtn, #movesubmitbtn').click(function(){
     if ($('#answer51145X130X6212subSQ001')<$('#answer51145X130X6212subSQ002'))
     {
       alert ('Cela n\'est pas possible');
       return false;
     }
     else
     {
       return true;
     }
   });
});
</script>

Pour information, existe-t-il un dictionnaire des "objets" et règles de nommage limesurvey ? Afin de savoir comment utiliser les #answer INSERTANS etc... ?
Last Edit: 2 years 5 months ago by darknico84.
The administrator has disabled public write access.

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #76001

  • TMSWhite
  • TMSWhite's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 759
  • Thank you received: 82
  • Karma: 36
In 1.92, you can use the new "Question validation equation" and "Question validation equation tip" (docs.limesurvey.org/Advanced+question+se..._validation_equation) to accomplish this.

Here is a working example similar to your question - demo192.limesurvey.org/index.php?sid=65354&lang=en

It asks you to enter the ages of your children in descending order. The multiple numeric question has 4 sub-questions named sq1-sq4, so the Question validation equation is:
q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4

and the question validation tip is
You must enter the ages of your children in descending order

There is a new CSS style called em_q_fn_validation that controls the visibility of this message. The default templates prevent this from appearing until the page has been submitted. However, you can change that default so that that message appears immediately whenever the user enters a value that is not in descending order.

Here is the .lss file

File Attachment:

File Name: limesurvey_survey_65354.lss
File Size: 22 KB


/Tom
The administrator has disabled public write access.
The following user(s) said Thank You: darknico84

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #76006

  • darknico84
  • darknico84's Avatar
  • OFFLINE
  • Senior Lime
  • Posts: 60
  • Karma: 0
Thanks a lot for your answer, I guess I'll maybe have a look at 1.92 :)
The administrator has disabled public write access.

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #76009

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 6272
  • Thank you received: 800
  • Karma: 240
Salut,

Sinon, pour les codes .

Cela devrait être si je comprend bien:
'#answer51145X130X6212SQ001'
et
'#answer51145X130X6212SQ002'

Mais le mieux est de vérifier directement dans la source du questionnaire. FireBug sous FireFox par example pour t'y aider.

Denis
The administrator has disabled public write access.

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #76020

  • darknico84
  • darknico84's Avatar
  • OFFLINE
  • Senior Lime
  • Posts: 60
  • Karma: 0
Effectivement, firebug me donne bien les valeurs que tu m'as indiquées par contre il y a un shmurtz dans le test car quoi que je mette il passe direct sur le else { return true; } . J'ai mis un alert dans cette section également pour vérifier par où passait le résultat du test.
<script type="text/javascript" charset="utf-8">
 $(document).ready(function() {
   $('#movenextbtn, #movesubmitbtn').click(function(){
     if ($('#answer51145X130X6212SQ001')>$('#answer51145X130X6212SQ002'))
     {
       alert ('Cela n\'est pas possible');
       return false;
     }
     else
     {
       alert ('Raoul!!');
       return true;
     }
   });
});
</script>

PS : j'ai inversé l'opérateur de test pour voir si cela change quelque chose.


En fait si j'essaye de balancer une de mes valeurs dans un alert j'obtiens [object Object]

alert ($('#answer51145X130X6212SQ002'));
Last Edit: 2 years 5 months ago by darknico84.
The administrator has disabled public write access.

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #76025

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 6272
  • Thank you received: 800
  • Karma: 240
Suis je bête .....

Il faut utiliser val() pour récupérer la valeur ....
Et en plus on va transformer en nombre pour être sûr ....
if (parseFloat($('#answer51145X130X6212SQ001').val())>parseFloat($('#answer51145X130X6212SQ002').val()))
Attention, le parsefloat n'est valide que pour les nombres avec le . comme séparateur, pas la ,.

Denis
The administrator has disabled public write access.

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #76032

  • darknico84
  • darknico84's Avatar
  • OFFLINE
  • Senior Lime
  • Posts: 60
  • Karma: 0
Merci grand Gourou Schnoulle, cela fonctionne parfaitement.
The administrator has disabled public write access.

Re: Comparaison de deux valeurs numérique dans une même question 2 years 5 months ago #76044

  • darknico84
  • darknico84's Avatar
  • OFFLINE
  • Senior Lime
  • Posts: 60
  • Karma: 0
Si cela peut servir un jour, voici le code final avec en plus un test vérifiant que les deux champs sont bien remplis :
<script type="text/javascript" charset="utf-8">
 $(document).ready(function() {
   $('#movenextbtn, #movesubmitbtn').click(function(){
     if (parseFloat($('#answer51145X130X6212SQ001').val())<parseFloat($('#answer51145X130X6212SQ002').val()))
     {
       alert ('Le nombre A ne peut pas être supérieur au nombre B');
       return false;
     }
     else if (!parseFloat($('#answer51145X130X6212SQ002').val()) ^ !parseFloat($('#answer51145X130X6212SQ001').val()))
     {
      alert ('Vous n\'avez pas rempli tous les champs');
      return false;
     }
     else
     {
       return true;
     }
   });
});
</script>
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Moderators: Nickko
Time to create page: 0.425 seconds
Donation Image