views:

375

answers:

1

I am attempting to stop a backspace keydown event from being handled by browsers, I'm using the jquery library, so I need to get the original event, but on some browsers (firefox at least) I get an error when trying to set the original events keyCode = 0, it gives and error saying that only a getter exists for that property.

function blockBackspace(event) {
    var altKey = event.originalEvent.altKey;
    var srcElementType = event.originalEvent.srcElement;
    if( (altKey) || ((event.keyCode == 8)  && (srcElementType != "text" && srcElementType != "textarea" && srcElementType != "password"))
        || ((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82)) ) || (event.keyCode == 116) )
        {
        event.keyCode = 0;
        event.returnValue = false;
        event.originalEvent.keyCode = 0;
        event.originalEvent.returnValue = false;
        //sets process backspaceFlag to keep multiple handlers from removing text
        processBackspace = true;
    }
}

so I'm not exactly sure what to do next, every solution I find yields more problems. There must be ways around this problem or else other text areas (that's kind of what I'm building) would not work

+1  A: 

You can't stop the event from happening. One alternative is to use the beforeunload proprietary event that asks the user if they really want to exit the page.

$(window).bind('beforeunload', function() {
    return "You want to leave the best page in the universe?";
});​
Anurag
this doesn't work for me, I need to stop the browser from going back in order to allow them to type into a custom text input systemif you check out the code I posted it actually works on some browsers... but firefox is giving me an access violation on the property that I'm trying to change
walnutmon