[英]How to unbind a jquery plugin in IE8
我的代码中有一个jquery插件,它将强制输入框仅接受数字输入,但是在某些时候,我必须禁用它并使它也接受字母。 我不能使用unbind(),因为它也将取消绑定其他功能。 任何帮助将不胜感激,谢谢。
这是我的jsfiddle https://jsfiddle.net/mpr73v9w/ ,下面是我的代码。
<input type="text">
<button>Button</button>
$.fn.ForceNumericOnly = function () {
return this.each(function () {
$(this).keydown(function (e) {
var key = e.charCode || e.keyCode || 0;
if (e.shiftKey) {
e.preventDefault();
}
// allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
return (
key == 8 ||
key == 9 ||
key == 13 ||
key == 46 ||
(key >= 37 && key <= 40) ||
(key >= 48 && key <= 57) ||
(key >= 96 && key <= 105));
});
});
};
$("input").ForceNumericOnly();
$("button").click(function() {
$('input').ForceNumericOnly.destroy();
});
可以使用允许事件名称空间的$.on()
方法来代替使用命名事件方法$.keydown()
。
$(this).on('keydown.forcenumericonly', function(e) {
// handle event
});
这使得取消特定事件的绑定变得很容易,而不会影响其他功能。 使用.off()
方法执行此操作。
$.fn.ForceNumericOnly.destroy = function () {
$(this).off('.forcenumericonly');
};
您可以仅将$(this).off('keydown.forcenumericonly')
keydown
事件与$(this).off('keydown.forcenumericonly')
绑定,或者如示例中那样,将forcenumericonly
命名空间中的所有事件与$(this).off('.forcenumericonly')
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.