如何在 IE8 中解绑 jquery 插件
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');
};
您可以仅解除 keydown
事件与 $(this).off('keydown.forcenumericonly')
的绑定,或者如示例中那样解除 forcenumericonly
命名空间中与 $(this).off('.forcenumericonly')
.
的所有事件的绑定
我的代码中有一个 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');
};
您可以仅解除 keydown
事件与 $(this).off('keydown.forcenumericonly')
的绑定,或者如示例中那样解除 forcenumericonly
命名空间中与 $(this).off('.forcenumericonly')
.