2016-09-16 4 views
0

Je suis très novice en JavaScript, et j'essaie actuellement d'ajouter un code personnalisé à mon sondage Qualtrics qui le rend si pressant que la touche Entrée continue le sondage. J'ai un code qui devrait fonctionner; cependant, je reçois une erreur "jeton inattendu").Qualtrics: Appuyez sur la touche Entrée pour émuler le bouton Continuer

Voici le code:

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    document.addEventListener("keydown", function(e) { 
     if (e.keyCode === 13) { 

      function(){ 
       that.clickNextButton(); 
      } 

    } 
    } 

}); 

la fonction « clickNextButton » a été trouvé dans le document API Qualtrics et est censé imiter le bouton clic suivant. La fonction est clickNextButton(), mais l'exemple fourni a le code that.clickNextButton().

L'exemple qu'ils utilisent est ci-dessous:

//Hides the next button and displays the question 
//for 5 seconds before moving to the next page 
this.hideNextButton(); 
var that = this; 
(function(){that.clickNextButton();}).delay(5); 

Je ne ai pas besoin de la fonction de bouton ou cacher le retard, mais voulait simplement inclure un exemple de la façon dont il est utilisé.

Toute aide est très appréciée, merci d'avance!

+0

Dans leur code, vous voyez 'var that = this', que vous n'avez pas inclus dans votre code. Voir si cela fonctionne :) – VirginieLGB

+0

@VirginieLGB Merci pour la réponse rapide! Je l'ai ajouté mais je reçois toujours l'erreur "jeton inattendu". – Eugene

+0

Vous venez d'oublier un ')' après l'avant-dernière parenthèse – VirginieLGB

Répondre

1

Voici une version simplifiée qui fonctionne (mise à jour pour cacher nextButton):

Qualtrics.SurveyEngine.addOnload(function() { 
    $('NextButton').hide();   
    document.on("keydown", function(e) { 
     if (e.keyCode === 13) $('NextButton').click(); 
    }); 
}); 
+0

Merci beaucoup! Ça marche! En guise de suivi, si je voulais cacher complètement le bouton suivant, (pour le moment il apparaît toujours), est-ce que j'ajouterais juste une ligne dans ce code avec le hideNextButton()? – Eugene

+0

J'ai mis à jour la réponse ci-dessus pour masquer le bouton suivant. S'il vous plaît accepter la réponse. –

+0

Terminé. Merci encore! – Eugene

0

Cela dépend de la portée, ou en particulier de l'emplacement de la fonction clickNextButton. Si vous ne vous souciez pas du délai d'attente, vous devriez pouvoir supprimer le mot 'that' de votre fonction Qualtrics.SurveyEngine et cela devrait fonctionner correctement.

Il est possible que la fonction ne soit pas disponible dans votre portée actuelle. Donc, si enlever 'ça' ne marche pas. Remets-le et mets var that = this; dans la ligne avant votre appel de fonction. C'est loin d'être une façon ordonnée de faire les choses, mais cela peut régler les choses pour vous.

À lire absolument. Est-ce que Meatloaf n'a pas dit quelque chose comme ... Je ferais n'importe quoi pour la portée ... mais je ne fais pas ça?

+0

Il devrait être dans la portée, je vais vérifier cela, Merci ! Cependant, il semble que j'obtiens une erreur de syntaxe. – Eugene

+0

Salut pas sûr si vous êtes toujours coincé avec ça. Mais si vous appelez clickNextButton(), dans la ligne avant de taper dans débogueur; Ensuite, ouvrez les outils de développement (ctrl-shift-i) et exécutez le code qu'il devrait arrêter juste avant l'appel de la fonction. Maintenant, vous pouvez taper des choses pour voir ce que vous obtenez. Dans la console, essayez de taper ceci; Explorez à partir de là. Voyez si vous pouvez voir la fonction dans la portée. – Ryan

0

Comme dit dans mon commentaire ... Voir si cela résout votre erreur

Qualtrics.SurveyEngine.addOnload(function() 
    { 
     document.addEventListener("keydown", function(e) { 
      if (e.keyCode === 13) { 

       function(){ 
        that.clickNextButton(); 
       } 

      } 
     }); // here was a missing bracket here 
    }); 
+0

Etrangement, je reçois toujours la même erreur. "Jeton inattendu)". – Eugene

0

J'ai donc vidéo intégrée dans une question et je devais désactiver au bouton Suivant pendant 15 secondes de cette façon, je saurais que la vidéo autoplay a été regardé.

Et cela a fonctionné pour moi si bien:

Qualtrics.SurveyEngine.addOnload(function() 
{ 
//Hides the next button and displays the question 
//for 15 seconds before moving to the next page 
this.disableNextButton(); 
var that = this; 
(function(){that.enableNextButton();}).delay(15); 

}); 

Vous pouvez changer les (15) secondes à un nombre quelconque, le bouton Suivant est activé et prêt à être cliqué à côté, mais pas vous envoyer automatiquement page suivante.