繁体   English   中英

如何在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');
};

您可以仅将$(this).off('keydown.forcenumericonly') keydown事件与$(this).off('keydown.forcenumericonly')绑定,或者如示例中那样,将forcenumericonly命名空间中的所有事件与$(this).off('.forcenumericonly')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM