Ciao a tutti gente,
più volte mi é stato posta la questione sul come poter disabilitare la funzionalità di Back() dell'oggetto History richiamata tramite il tasto di backspace: può succedere che quando si compila velocemente una form venga perso il focus sugli oggetti, e premendo il tasto backspace ci si trovi sulla pagina precedente.
Lo scriptino che risolve questo problema é molto semplice, ed é il seguente:
<script language="JavaScript">
<!-- Begin
function stopBack(e) {
statusID.value = event.srcElement.id ;
if (event.srcElement.id.toUpperCase() == "BODY" || event.srcElement.id == "") {
if (window.event.keyCode == 8) {
alert("Spiacenti, funzionalità INDIETRO tramite backspace disabilitata.");
return false;
}
}
}
document.onkeydown=stopBack;
// End -->
</script>
Due paroline per spiegarvi cosa fa: rileva l'evento KeyDown su tutto il documento, controlla qual'é l'ID dell'oggetto scatenante e se l'ID scatenante é nullo (come di solito é quello del BODY) oppure equivale ad un ID scelto da voi (esempio: "BODY") e la chiave premuta é uguale a "8" (codice ASCII del backspace) allora restituisce come valore di ritorno "false", bloccando l'indietreggiamento nell'history.
Il controllo dell'ID é neccessario se si vuole evitare che il tasto backspace venga bloccato anche sugli oggetti della form come le textbox o le textarea, impedendovi di cancellare ciò che scrivete per correggere eventuali errori. Ovviamente ogni oggetto della vostra form dovrà essere fornito di ID.
Saluti
-VTD-
PS: L'ho testato solo su IE, per NS credo sia sufficiente sostituire l'evento intercettato con "click" (se non ricordo male NS rileva i tasti della tastiera come click).