sir_thursday
sir_thursday

Reputation: 5419

Stop spacebar from scrolling page

I know that e.preventDefault(); is supposed to stop the spacebar from scrolling on the page, but it is not working on my function

$("html").live("keyup", function (e) {
    var code = (e.keyCode ? e.keyCode : e.which);
    if ((code == 32 || code == 13) && $("span").is(":focus")) {
        openDropdown();
        $(".dropdown a.PivotItem:first").focus();
        e.preventDefault();
    } else if ((code == 32 || code == 13) && $("a.PivotItem").is(":focus")) {
        closeDropdown();
        changeSelected($("*:focus"));
        e.preventDefault();
    } else if (code == 27 && ($("span").is(":focus") || $(".dropdown a.PivotItem").is(":focus"))) {
        closeDropdown();
        $("span").focus();
    } else {
        //do nothing
    }
});

Does it have something to do with the .live( handler I have included?

Upvotes: 8

Views: 8078

Answers (1)

nnnnnn
nnnnnn

Reputation: 150080

The space-bar scrolls the page on keydown, not on keyup, so try:

$("html").on("keydown", function (e) {
   // etc

You don't really need to use .live(), because the html element will exist when your code runs.

Also, jQuery normalises event.which so you don't need to test for event.keyCode.

Upvotes: 22

Related Questions