Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1
  • 2

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

Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #75958

  • darknico84
  • darknico84s Avatar
  • OFFLINE
  • Senior Lime
  • Beiträge: 58
  • 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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #75961

  • DenisChenu
  • DenisChenus Avatar
  • OFFLINE
  • Moderator Lime
  • Beiträge: 5845
  • Dank erhalten: 715
  • Karma: 222
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>
Letzte Änderung: 2 Jahre 1 Monat her von DenisChenu.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Folgende Benutzer bedankten sich: darknico84

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #75981

  • darknico84
  • darknico84s Avatar
  • OFFLINE
  • Senior Lime
  • Beiträge: 58
  • 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... ?
Letzte Änderung: 2 Jahre 1 Monat her von darknico84.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #76001

  • TMSWhite
  • TMSWhites Avatar
  • OFFLINE
  • LimeSurvey Team
  • Beiträge: 759
  • Dank erhalten: 81
  • 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

Dateianhang:

Dateiname: limesurvey_survey_65354.lss
Dateigröße: 22 KB


/Tom
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Folgende Benutzer bedankten sich: darknico84

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #76006

  • darknico84
  • darknico84s Avatar
  • OFFLINE
  • Senior Lime
  • Beiträge: 58
  • Karma: 0
Thanks a lot for your answer, I guess I'll maybe have a look at 1.92 :)
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #76009

  • DenisChenu
  • DenisChenus Avatar
  • OFFLINE
  • Moderator Lime
  • Beiträge: 5845
  • Dank erhalten: 715
  • Karma: 222
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #76020

  • darknico84
  • darknico84s Avatar
  • OFFLINE
  • Senior Lime
  • Beiträge: 58
  • 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'));
Letzte Änderung: 2 Jahre 1 Monat her von darknico84.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #76025

  • DenisChenu
  • DenisChenus Avatar
  • OFFLINE
  • Moderator Lime
  • Beiträge: 5845
  • Dank erhalten: 715
  • Karma: 222
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #76032

  • darknico84
  • darknico84s Avatar
  • OFFLINE
  • Senior Lime
  • Beiträge: 58
  • Karma: 0
Merci grand Gourou Schnoulle, cela fonctionne parfaitement.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Comparaison de deux valeurs numérique dans une même question 2 Jahre 1 Monat her #76044

  • darknico84
  • darknico84s Avatar
  • OFFLINE
  • Senior Lime
  • Beiträge: 58
  • 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>
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
  • 2
Moderatoren: Nickko
Ladezeit der Seite: 0.466 Sekunden
Donation Image