2013-04-11 45 views
0

我想創建我的第一個jQuery插件,它應該提供輸入限制的方法。這是代碼。但我不知道如何爲keydown事件傳遞參數「event」。關鍵限制jquery插件

(function ($) { 
var methods = { 
    IntegerOnly: function (event) { 
     // Allow: backspace, delete, tab, escape, and enter 
     if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || 
     // Allow: Ctrl+A 
     (event.keyCode == 65 && event.ctrlKey === true) || 
     // Allow: home, end, left, right 
     (event.keyCode >= 35 && event.keyCode <= 39)) { 
      // let it happen, don't do anything 
      return; 
     } 
     else { 
      // Ensure that it is a number and stop the keypress 
      if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { 
       event.preventDefault(); 
      } 
     } 
    } 
}; 

$.fn.inputRestriction = function (method) { 
    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } else if (typeof method === 'object' || !method) { 
     return methods.init.apply(this, arguments); 
    } else { 
     $.error('Method ' + method + ' does not exist on jQuery.inputRestriction'); 
    } 
}; 
})(jQuery); 

它應該被稱爲像

$('#txtInteger').inputRestriction('IntegerOnly'); 
+0

如何使用這個插件應該?你沒有綁定事件處理程序,應用程序是否應該在自己的'keydown'處理程序中調用它? – Barmar 2013-04-11 00:57:38

回答

0

你寫的插件的方式,它必須這樣使用:

$("txtInteger").keydown(function(event) { 
    $(this).inputRestriction('IntegerOnly', event); 
}); 
+0

謝謝,它的工作原理!但我認爲我編寫插件的方式絕對不是一個好方法。你能告訴我什麼是通過插件限制角色的正確方法。 – 2013-04-11 01:08:27

+0

你可能想讓你的插件做的事情是將自己的'keydown'處理程序添加到它所運行的元素上。我在編寫插件方面沒有經驗,所以我不打算詳細說明。看看插件如何驗證和自動完成綁定處理程序。 – Barmar 2013-04-11 01:11:30