Le formulaire de connexion Javascript ne s'affiche pas lorsque l'utilisateur clique sur Entrée
Je suis en train de travailler sur un simple javascript de connexion pour un site, et ont abouti à ceci:
<form id="loginwindow">
<strong>Login to view!</strong>
<p><strong>User ID:</strong>
<input type="text" name="text2">
</p>
<p><strong>Password:</strong>
<input type="password" name="text1"><br>
<input type="button" value="Check In" name="Submit" onclick=javascript:validate(text2.value,"username",text1.value,"password") />
</p>
</form>
<script language = "javascript">
function validate(text1,text2,text3,text4)
{
if (text1==text2 && text3==text4)
load('album.html');
else
{
load('failure.html');
}
}
function load(url)
{
location.href=url;
}
</script>
...qui fonctionne sauf une chose: appuyer sur la touche enter pour soumettre le formulaire n'a pas à faire quoi que ce soit. J'ai le sentiment que c'est parce que j'ai utilisé "onclick" mais je ne suis pas sûr de ce que pour utiliser à la place. Pensées?
Ok ouais je suis donc bien conscient de la manière dont fragile, c'est la sécurité. Ce n'est pas pour quelque chose de particulièrement top secret, donc ce n'est pas un problème, mais si vous les gars pourrait apporter des précisions sur vos pensées avec le code, je serais ravi de voir vos idées. le code, c'est littéralement tout ce que je suis en train de travailler avec, à ce point, pour que je puisse commencer à partir de zéro en cas de besoin.
source d'informationauteur user27171
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs sujets en cours de discussion à la fois. Nous allons essayer de clarifier.
1. Votre Préoccupation Immédiate:
(Pourquoi ne pas le bouton input de travail lorsque la touche ENTRÉE est pressée?)
Utiliser le soumettre le type de bouton.
..au lieu de
Votre problème n'a pas vraiment d'avoir quelque chose à voir avec le fait d'avoir utilisé un onclick attribut. Au lieu de cela, vous n'obtenez pas le comportement que vous voulez parce que vous avez utilisé la bouton type d'entrée, qui simplement ne se comportent pas de la même façon que les boutons de soumission ne.
Dans le HTML et le XHTML, il y a des comportements par défaut pour certains éléments. Boutons d'entrée sur les formes sont souvent de type "submit". Dans la plupart des navigateurs, les boutons "soumettre" feu par défaut lorsque la touche ENTRÉE est pressée à partir d'un concentré élément dans le même élément de formulaire. Le "bouton" type d'entrée ne fonctionne pas. Si vous souhaitez profiter de ce comportement par défaut, vous pouvez changer votre type d'entrée à "soumettre".
Par exemple:
2. Les préoccupations de sécurité:
@Ady mentionné un problème de sécurité. Il y a tout un seau de problèmes de sécurité associés à un de connexion en javascript. Ces sont probablement à l'extérieur de la domaine de cette questionsurtout depuis que vous avez indiqué que vous n'êtes pas particulièrement inquiet à ce sujet, et le fait que votre méthode de connexion s'agissait en fait de la définition de l'emplacement.href vers une nouvelle page html (ce qui indique probablement que vous n'avez pas eu un réel mécanisme de sécurité en place).
Au lieu de drudging qui, ici, sont des liens vers des rubriques connexes sur DONC, si quelqu'un est intéressé à ces questions directement.
3. Autres Questions:
Voici un rapide nettoyage de votre code, ce qui suit un certain nombre de meilleures pratiques. Il ne traite pas le problème de sécurité que les gens ont mentionné. Au lieu de cela, je suis, y compris, il suffit de illustrer certains de saines habitudes de vie. Si vous avez des questions au sujet de pourquoi j'ai écrit quelque chose d'une certaine manière, n'hésitez pas à demander. Aussi, parcourir la pile pour les sujets liés à la (comme votre question peut-être déjà été abordé ici).
La principale chose à remarquer est la la suppression de la manifestation des attributs de (onclick="", onsubmit="", ou onkeypress="") de l'HTML. Ceux qui appartiennent en javascript, et il est considéré comme une bonne pratique de conserver les événements javascript de l'annotation.
Au lieu de <input type="button">, utilisez <input type="submit">. Vous pouvez mettre votre code de validation dans votre form onsubmit gestionnaire:
<form id="loginwindow" onsubmit="valider(...)">
c'est parce que ce n'est pas un formulaire de soumission, donc il n'y a aucun cas être déclenché lorsque l'utilisateur appuie sur entrée. Une alternative à la forme ci-dessus, présenter des options serait d'ajouter un écouteur d'événement pour le formulaire de saisie pour détecter si l'utilisateur appuie sur entrée.
Mettre le script directement dans votre document html. Changer le onclick de la valeur avec la fonction que vous souhaitez utiliser. Le script dans le code html de dire le formulaire lorsque l'utilisateur appuie sur entrée ou appuyez sur le bouton "soumettre".
Peut-être vous pouvez essayer ceci:
Comme d'autres l'ont souligné, il y a d'autres problèmes avec votre solution. Mais cela devrait répondre à votre question.
Sûrement, c'est trop dangereux comme tout le monde peut craquer en une seconde ...
-- pseudo-sûr de le faire en js-les connexions sont similaires:
Ma Pensée = Énorme trou de sécurité. N'importe qui peut afficher le nom d'utilisateur et mot de passe.
Plus pertinentes à votre question: - Vous avez deux événements.
La touche entrée soumet le formulaire, mais ne cliquez pas sur le bouton.
En plaçant votre code dans la méthode onsubmit du formulaire le code à exécuter lorsque le formulaire est soumis. En changeant le type d'entrée du bouton, le bouton soumettre le formulaire de la même façon que le bouton enter.
Votre code fonctionne pour les deux événements.