2014-04-14 115 views
0

只是在我的愚見,代碼看起來很長並且重複性,有沒有辦法可能縮短JavaScript?縮短捕獲CTRL鍵盤事件的功能

使用流行的框架jQuery是也是允許的:

//-------------------------------------------------------------------->> 
    // 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; 
      } 
     } 

回答

1

我想別人也許可以做一個更好的工作比我,但這是來到我的腦海:

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; 
}