2009-07-21 7 views
2

Retour arrière est la touche de raccourci du navigateur pour retourner à la dernière page. Je sais que lorsqu'une entrée a le focus, cette touche de raccourci est désactivée. Mais j'ai des événements keyup et keydown liés à cette entrée, et quelque chose que j'ai écrit cause ce problème.Comment éviter de revenir en arrière lorsque l'utilisateur tape un retour arrière sur une entrée de texte HTML?

Connaissez-vous la solution? Lorsque vous avez géré l'événement depuis l'élément d'entrée, annulez le bouillonnement de cet événement avant de le renvoyer.

+0

Le problème est-il lié à l'entrée et au retour arrière de l'entrée arrière, ou est-ce le cas? Quel est exactement le comportement que vous voyez? – MadMurf

+0

Si vous soupçonnez que quelque chose que vous avez écrit est la cause probablement le mieux d'afficher le code ici. Sinon presque impossible de déterminer une solution. – MadMurf

+0

Exactement. Il ne doit pas revenir en arrière. Dans le présent, c'est malheureusement le faire. –

Répondre

0

Le problème a été provoqué par la suppression d'entrée avant de renvoyer l'événement onKeyDown.

1

+0

à la fois event.preventDefault() ou event.stopPropagation() résout le problème sur IE et Chrome. Mais je n'ai toujours pas trouvé la solution pour Firefox http://www.quirksmode.org/js/events_order.html –

0

essayer ceci sur votre onKeyDown ou onKeyPress même

if (event.keyCode==8)//where 8 ascii code of backspace 
{ 
retunr; 
} 
0

Vous pouvez essayer de brancher en cas de window.onbeforeunload pour empêcher une telle navigation accidentelle.

0

que vous pouvez faire:

  1. Vous pouvez définir un écouteur pour InputField et regarder tous les événements keydown.
  2. Dans l'écouteur d'événement, vous pouvez créer une variable de tampon, qui a une valeur réelle InputField.

Donc, si vous acceptez un pas de code Backspace alors une nouvelle valeur de tampon sera la valeur InputField et vous utilisez votre hotKeyFunction, d'autre nouvelle valeur de InputField sera la valeur tampon et vous obtenez un travail normal de InputField.

0
if (typeof(window.event)!='undefined')//ie 
    {document.onkeydown=function() 
         {var tag_name=event.srcElement.tagName.toUpperCase(); 
         if (tag_name!='INPUT' && tag_name!='TEXTAREA') 
          {return event.keyCode!=8; 
          } 
         }; 
    } 
else //firefox, chrome 
    {window.addEventListener('keydown',function(evt){if (evt.keyCode==8){evt.preventDefault();}}, true); 
    } 
Questions connexes