【问题标题】:Is there an event for when an input gets disabled?当输入被禁用时是否有事件?
【发布时间】:2011-08-17 15:57:53
【问题描述】:

对于我正在制作的输入扩展脚本,我需要一个输入来告诉我它何时/是否被禁用。也就是说,当它设置了disabled 参数时。

有活动吗?

如果不是,我将如何模仿这种行为?

我也在使用 jQuery

【问题讨论】:

  • 什么会禁用input?它将成为您脚本的其他部分吗?

标签: javascript jquery html events input


【解决方案1】:

理想情况下,您需要锁定的任何事件(不是用户事件 - clickmouseover 等)都应该在代码中以编程方式触发,而不是轮询实际的 DOM,这是您的代码生成的最终表示。

DOM 突变事件没有得到很好的支持,AFAIK are being deprecated

从你所说的声音来看,最好的办法似乎是检查 <input> 在启动扩展/插件时是否被禁用,然后启用插件/扩展用户禁用通过您自己的 API 输入,这意味着您可以知道它何时发生。

一个非常原始的例子是为 jQuery 创建自己的 disable 方法:

jQuery.fn.disable = function() {
    return this.each(function(){
        $(this).attr('disabled', true).triggerHandler('disable');
    });
};

// E.g.
var input = jQuery('input#foo');
input.bind('disable', function(){ alert('Foo Disabled!'); });
input.disable();

您可以看到我们为disable 方法中的每个元素触发了我们自己的事件。这只是一个例子;我真的不建议这样做 - 尝试将所有内容保存在您自己的插件/扩展的命名空间下。

【讨论】:

    【解决方案2】:

    恐怕没有这样的内置事件。但是,使用触发器和绑定,您可以创建自己的事件。 Custom events in jQuery?

    【讨论】:

      【解决方案3】:

      我希望使用.attr()你可以发现它是否被禁用

      【讨论】:

      • 发现它不是问题 - 检测它何时发生变化。
      猜你喜欢
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      相关资源
      最近更新 更多