type d'entrée de texte et onKeyDown ne fonctionne pas sous IE
Je suis en train d'écrire une application WWW, il doit courir sous IE. J'ai le problème avec le code qui s'exécute sous FF, mais je ne peux pas essayer de le faire fonctionner sous IE.
//Code JS
function test()
{
if (window.event.keyCode == 13)
window.location.assign("myPage.php");
}
J'ai essayé quelques méthodes similaires autour de la fenêtre.l'emplacement et l'emplacement.href, aussi le document.emplacement. J'ai lu que IE a des problèmes, donc je demande à une solution.
L'objectif est, que la page est rechargée après avoir taper du texte dans <input type='text' name='item_code' onKeyDown='test()'>
et cliquez sur entrer. Ainsi, le résultat est similaire à appuyer soumettre type bouton ci-dessous le texte d'entrée.
Dans IE, il recharge la même page et rien ne se passe. Dans FF il fonctionne correctement.
Mise à JOUR 1:
Essayé la solution donnée par la bobince.
<input type='text' name='item_code'>
<script type='text/javascript' >
document.getElementsByName('item_code')[0].onkeydown = function(event)
{
if (event == undefined) { event = window.event; }
if (event.keyCode == 13) { window.location = 'myPage.php'; }
alert('1');
}
</script>";
Le problème, c'est que si il y a alert('1');
ligne, page affiche d'alerte et de redirections, si il n'y a pas alert('1');
ligne, page il suffit de recharge pour lui-même. Je ne sais pas quel est le problème ici?
Mise à JOUR 2:
Je suis coller de ce qui a fonctionne pour moi.
<form action='mainPage.php' method='POST'>
<input type='text' name='item_code'>
</form>
<script type='text/javascript' >
document.getElementsByName('item_code')[0].onkeydown= function(event)
{
if (event == undefined)
{
event = window.event;
}
if (event.keyCode == 13)
{
var js_item_code = document.getElementsByName('item_code')[0].value;
window.location = 'myPage.php?item_code='+js_item_code;
return false;
}
};
</script>
- Que diriez -
window.location.href = "myPage.php";
window.location.href
n'a pas deassign
méthode (window.location
n'). Cependant, je ne pense pas que c'est votre problème, parce que la même chose est vraie (et lèvera une erreur) dans Firefox. Vous avez aussi quelques autres fautes de frappe dans votre code (que j'ai fixé, mais vous avez modifié dans de retour :-))- oh, ne le savait pas, pls de les éditer à nouveau si vous le pouvez, vous remercie de votre entrée
Vous devez vous connecter pour publier un commentaire.
C'est étrange, parce que votre utilisation de
window.event
devrait assurer votre fonction seulement jamais travaille dans IE. C'est certainement ce qui se passe pour moi quand j'ai essayer ton code. J'ai l'impression que tu ne nous montre pas.La façon habituelle de gérer les événements en une manière de croix-navigateur avec inline attributs de gestionnaire d'événement serait:
Cela fonctionne parce que
event
dans l'attribut fait référence à la globalwindow.event
dans IE, où dans tous les autres navigateur, il se réfère à un argument nomméevent
passé dans le gestionnaire d'événement attribut de la fonction.Cependant, il est généralement préférable d'éviter les attributs de gestionnaire d'événement et d'attribuer des gestionnaires de JavaScript lui-même. Dans ce cas, vous devez vérifier pour voir qui à utiliser:
En général, je voudrais seulement essayer de piéger Entrer des combinaisons de touches à reproduire/modifier défaut de soumission de formulaire de comportement comme un dernier recours, mieux si vous pouvez laisser le soumettre à l'endroit où vous voulez aller.
alert('sth');
est après la 2ème si le bloc: la page à afficher un message d'alerte et de redirections. Si je supprime cette ligne d'alerte, page recharge pour lui-même..<form>
élément, alors vous aurez besoin d'ajouterreturn false
pour le gestionnaire d'événements, sinon le formulaire continuera à présenter comme normal en appuyant sur la touche Enter, et à la fin jusqu'à la forme duaction
attribut (par défaut l'URL courante, si omis, bien que l'omission n'est pas valide). Si vous disposez d'un formulaire et vous souhaitez le piège de la soumission sur elle (avec la touche Enter ou tout autre moyen), il est de loin préférable d'utiliser leonsubmit
événement plutôt que de s'inquiéter de recréer un navigateur spécifique de gestion des comportements.<form>
et il suffit d'inclure nu<input>
éléments donc il n'est pas indésirable de soumission.onsubmit
est sur<form>
. Vous pouvezreturn false
à partir d'un gestionnaire de soumission pour arrêter le formulaire soumis. [Vous pouvez égalementreturn false
sur un bouton de soumission duonclick
gestionnaire d'arrêter le clic provoque le formulaire pour être soumis. Vous pouvez égalementreturn false
sur une entréeonkeypress
gestionnaire pour arrêter l'Entrée de pression de touche provoque le formulaire pour soumettre. Vous pouvez égalementreturn false
sur une entréeonkeydown
gestionnaire d'arrêter le keydown provoquant unekeypress
, qui à son tour s'arrête également le formulaire soumis! Mais le blocageonsubmit
est le plus fiable qu'il attrape tous les cas.]window.event
travaille aussi dans le récent (et probablement aussi plus âgés) des versions de Chrome et Safari.de l'essayer. il a travaillé pour moi plus tôt.
onKeyPress
est maintenant une fonction qui fait référence à laKeyCheck
fonction, puis ne fait rien avec elle.KeyCheck
ne sera jamais appelé.Il doit travailler en général. Deux problèmes potentiels que vous avez exécuté dans:
jQuery fixer
Il existe un moyen de le faire fonctionner sans l'aide de la
<form>
tag sur votre code html.C'est la solution la plus simple que j'ai trouvé qui fonctionne avec IE, Chrome et Firefox au moins:
JS:
HTML: