Jason Kelly
Jason Kelly

Reputation: 2655

Shortening a function to capture CTRL Keyboard events

Just in my humble opinion, the code looks to be long and repetitive, is there a way to perhaps shorten the javascript?

The use of the popular framework jQuery is also permitted:

    //-------------------------------------------------------------------->>
    // CTRL SHORTCUT FEATURES:
    //-------------------------------------------------------------------->>
    function KeyDownHandler(evnt) {
        var evnt = evnt || window.event;

        //CTRL-S
        if (evnt.keyCode == 83 && evnt.ctrlKey) {
            evnt.preventDefault ? evnt.preventDefault() : event.returnValue = false;

            if (document.getElementById('save').disabled == false) {
                imts_save_changes()
            }

            return false;
        }
        //CTRL-X
        else if (evnt.keyCode == 88 && evnt.ctrlKey) {
            evnt.preventDefault ? evnt.preventDefault() : event.returnValue = false;

            if (document.getElementById('delete').disabled == false) {
                imts_delete_record()
            }

            return false;
        }

        //CTRL-A
        else if (evnt.keyCode == 65 && evnt.ctrlKey) {
                evnt.preventDefault ? evnt.preventDefault() : event.returnValue = false;
                    imts_add_new()          
                return false;
            }
        }

Upvotes: 0

Views: 32

Answers (1)

Pete
Pete

Reputation: 3254

I think somebody else can probably do a better job than me, but this is what came to my mind:

function KeyDownHandler(evnt) {
    var evnt = evnt || window.event;

    if (evnt.ctrlKey) {
        evnt.preventDefault ? evnt.preventDefault() : event.returnValue = false;
        switch(evnt.keyCode) {
            case 83: 
                if (document.getElementById('save').disabled == false) {
                    imts_save_changes()
                }
                break;
            case 88:
                if (document.getElementById('delete').disabled == false) {
                    imts_delete_record()
                }
                break;
            case 65:
                imts_add_new()     
                break;
        };
    }

    return false;
}

Upvotes: 1

Related Questions