Forum Clubic

[HTML/JS] Désactiver BACKSPACE - Eviter le retour sur page précédente

Bonjour,

Je cherche a désactiver le retour à la page précédente associé à BACKSPACE dans certains browsers… Je voudrais simplement utiliser cette touche… pour effacer un caractère hors formulaire

Des idées?

Merci

change le liens comme le suit:

<script>document.location="formulaire2.php"</script>

dans ce cas meme s’il revient en arriere il va se redireger automatiquement de nouveau vers formulaire.php :wink:

Merci pour ta réponse, malheureusement, je ne cherche pas à empêcher l’utilisateur de revenir en arrière

Mon but est de réaliser une saisie hors formulaire (i.e. pas dans un input), et la touche backspace est bien trop intuitive ;). Je risque de perdre l’état de ma page courante (Je ne sais pas ce que deviennent les appels par setTimeout)

function gereClavier() {
  var touche;
  if(window.event) {
    touche = window.event.keyCode;
  } else {
    touche = arguments[0].keyCode;
  }
  if(touche == 8) {}
}
document.onkeydown = gereClavier;

PS : pas sûr que ça fonctionne.

Y a pas une Key pour ça plutôt que 8 ?

J’en sais rien :neutre:

Event.KEY_BACKSPACE.

Mais comme j’ai vu plein de confusion Java/Javascript je sais pas si ça fonctionnera.

Et faut aussi faire gaffe que ça doit être que Fx/Opera, IE gérant ça d’une autre façon (donc le 8 dans les deux cas c’est à surtester)

Merci à tous, je vais essayer ça ce soir, je teste IE7/FF2/O9

Ma seule autre alternative est l’usage d’un input invisible, mais cela m’oblige à forcer le focus sur le champ pour toute action de l’utilisateur (lourd :frowning: )

Je sais que ce n’est plus d’actualité, mais étant à la recherche de solution moi-même, je poste ici ce que j’ai trouvé et qui marche très bien!


VK_BSPACE = 8;
VK_F5 = 116;

function isFromEdit(e) {
 if (window.event) e = window.event;
 var target = e.target ? e.target : e.srcElement;
 return ((target.tagName=="INPUT" && (target.type == "text" || target.type == "password")) || target.tagName=="TEXTAREA");
}

function blocBadTouche(e) {
 if (window.event) e = window.event;
 var touche = window.event ? e.keyCode : e.which;
 var target = e.target ? e.target : e.srcElement;
 if ((touche == VK_BSPACE && !isFromEdit(e)) || touche == VK_F5 ) {
  if (e.keyCode) e.keyCode=0;
  return false;
 }
 return true;
}

-- Dans la balise BODY :
<body onkeydown="return blocBadTouche(event)" ....

Cela permet de bloquer le retour arrière avec backspace sans bloquer sa fonction d’effacement dans un INPUT, et cela bloque aussi le F5.
Edité le 05/11/2008 à 11:35