L'idée de base est d'avoir plusieurs questions, mais une seule s'affiche de manière aléatoire au chargement de la page. Quelle que soit la réponse à cette question, un téléchargement sera affiché.

Les questions se chargent de manière aléatoire, mais lorsque je réponds, le téléchargement ne s'affiche pas. Je pensais que tout mon code était correct, mais il y a peut-être une meilleure façon de le faire. Si vous pouviez m'aider, je l'apprécierais grandement.

P.S. Je sais déjà que ce n'est pas un moyen super sécurisé de cacher quelque chose, mais cela n'a pas besoin d'être très sécurisé.

<form id="1">
Enter the 5th word on page 28 to access the download:
<input id="pwd1" name="pwd1" type="text" />
</form>
<form id="2">
Enter the 6th word on page 29 to access the download:
<input id="pwd2" name="pwd2" type="text" />
</form>
<form id="3">
Enter the 4th word on page 30 to access the download:
<input id="pwd3" name="pwd3" type="text" />
</form>
<form id="4">
Enter the 3rd word on page 32 to access the download:
<input id="pwd4" name="pwd4" type="text" />
</form>
<form id="5">
Enter the 5th word on page 33 to access the download:
<input id="pwd5" name="pwd5" type="text" />
</form>
<form id="6">
Enter the 3rd word on page 34 to access the download:
<input id="pwd6" name="pwd6" type="text" />
</form>
<form id="7">
Enter the 5th word on page 35 to access the download:
<input id="pwd7" name="pwd7" type="text" />
</form>
<form id="8">
Enter the 4th word on page 36 to access the download:
<input id="pwd8" name="pwd8" type="text" />
</form>
<form id="9">
Enter the 6th word on page 37 to access the download:
<input id="pwd9" name="pwd9" type="text" />
</form>


<div id="hc" style="display: none;">
<center><a href="sudoku.zip"><img id="download" src="download.png"></a></center>
</div>

<script language="javascript">
var rand = Math.floor(Math.random()*9);
$('form').hide().eq(rand).show();
$('form').keyup(function(){
if($('#pwd1').val() == 'more'){
   $('#hc').show('slow');
}
if($('#pwd2').val() == 'Rectangle'){
   $('#hc').show('slow');
}
if($('#pwd3').val() == 'case'){
   $('#hc').show('slow');
}
if($('#pwd4').val() == 'similarities'){
   $('#hc').show('slow');
}
if($('#pwd5').val() == 'similar'){
   $('#hc').show('slow');
}
if($('#pwd6').val() == 'this'){
   $('#hc').show('slow');
}
if($('#pwd7').val() == 'done'){
   $('#hc').show('slow');
}
if($('#pwd8').val() == 'outside'){
   $('#hc').show('slow');
}
if($('#pwd9').val() == 'completed'){
   $('#hc').show('slow');
}
else{$('#hc').hide();} 
});
</script>
1
jaruesink 26 sept. 2011 à 19:42

5 réponses

Meilleure réponse

Ce serait beaucoup plus propre:

var rand = Math.floor(Math.random() * 9),
    words = ['more', 'Rectangle', 'case', 'similarities', 'similar', 'this', 'done', 'outside', 'completed'];
$('form').hide().eq(rand).show();
$('form input').keyup(function() {
    if (this.value === words[rand])
        $('#hc').show('slow');
});

Voici un jsFiddle de son fonctionnement.

Modifier J'ai eu l'index sur words incorrect, corrigé maintenant.

1
Chad 26 sept. 2011 à 16:44

Votre code ne fonctionnera que si # pwd9 est celui indiqué. changez vos if en else if. ou switch

Et NON, ce n'est pas du tout sécurisé. le lien est là tout le temps

2
Einacio 26 sept. 2011 à 15:48

Je ne suis pas sûr que cela puisse fonctionner du tout. Voici comment procéder:

  1. Un langage côté serveur, comme php, sélectionne une question aléatoire et imprime un formulaire à l'écran.

  2. Votre formulaire a besoin d'un bouton d'envoi qui, une fois enfoncé, enverra les données au serveur.

  3. Le langage côté serveur traitera ensuite les données et décidera d'afficher ou non le lien.

C'est ainsi que cela se fait normalement + c'est plus sécurisé, les réponses et le lien ne peuvent pas être lus si facilement.

0
CodeVirtuoso 26 sept. 2011 à 15:50

Je pense que vous manquez quelque chose dans la syntaxe - toutes vos instructions if (sauf la première), devraient être elseif.

Ce n'est vraiment pas très sûr, et pour être honnête, probablement plus de travail que de le faire `` correctement '' (c'est-à-dire afficher la question de manière dynamique et n'avoir qu'un seul formulaire, et probablement faire quelque chose (presque n'importe quoi) pour rendre cela plus sûr).

0
Paddy 26 sept. 2011 à 15:50

Votre problème est que vous n'utilisez que des if. Utilisez else if pour chacun if pour faire le final sinon par rapport à tous les if plutôt qu'à la dernière.

0
Korvin Szanto 26 sept. 2011 à 15:53