2012-08-17 46 views
3

我有幾個頁面的下面這段代碼,我需要它更:如何封裝的JavaScript代碼的jQuery插件或其它溶液

 $('.editable-textbox').live('keypress', function(e) { 
      if (e.keyCode == 13) { 
       $(this).blur(); 
       return false; 
      } 
      return true; 
     }).live('keyup', function(e) { 
      if (e.keyCode == 13) { 
       $(this).blur(); 
       return false; 
      } 
      return true; 
     }); 

有是的一些缺點它:

  • 該代碼並不意味着它的功能。它的作用是:防止時,輸入被擊中控制與.editable-textbox類+控制模糊當然重複的代碼

我只是想知道形式submittion:有沒有辦法來重構它有這樣的事情:

$('.editable-textbox').supressFormSubmitOnEnter(); 

with jQuery。

回答

7

是的。

$.fn.supressFormSubmitOnEnter = function() { 
    return this.live('keypress', function(e) { 
      if (e.keyCode == 13) { 
       $(this).blur(); 
       return false; 
      } 
      return true; 
     }).live('keyup', function(e) { 
      if (e.keyCode == 13) { 
       $(this).blur(); 
       return false; 
      } 
      return true; 
     }); 
}; 

您應該給Plugin Authoring Guide一個閱讀。

而且,它可以寫成更加簡潔...

$.fn.supressFormSubmitOnEnter = function() { 
    return $(document).on('keypress keyup', this, function(e) { 
      if (e.keyCode == 13) { 
       $(this).blur(); 
       e.preventDefault(); 
      } 
     }); 
}; 

jsFiddle