【问题标题】:Remove Twitter Typeahead from Text Box从文本框中删除 Twitter Typeahead
【发布时间】:2013-06-24 21:09:57
【问题描述】:

我正在尝试禁用表单上的所有文本框。其中一个盒子上有一个预输入。当我这样做时:

$(#textbox).attr('disabled', true);

它不再启用,但颜色不会像所有其他文本框在禁用时那样切换。

我相信这是由于 twitter typeahead 造成的,我想知道是否有办法绕过它。有谁知道在禁用文本框时如何覆盖文本框背景颜色或完全删除预输入?

我尝试过.unbind().addClass("greyBackground"),但似乎都没有成功。

【问题讨论】:

  • 我看到颜色变化很好
  • @Ian 你用什么实现来禁用文本框?
  • 在这里也被正确禁用(背景在干净的“新鲜”引导程序中更改)-也许$("#textbox").attr((使用引号)会有所帮助?
  • fyi,.attr() 是设置禁用等属性时的错误方法。为此使用.prop()(但在这种情况下两者都不起作用)

标签: javascript typeahead typeahead.js


【解决方案1】:

如果您不关心在禁用 textarea 时维护 typeahead.js 功能,您可以像这样销毁 typeahead:

$('#textbox').typeahead('destroy');

这将重置/删除 typeahead.js 可能添加的任何属性/样式。如果稍后您想重新添加 typeahead.js 功能,您可以使用以下命令重新初始化它:

$('#textbox').typeahead({ /* configs */ });

此外,typeahead.js 不支持开箱即用的 textarea 元素,因此除非您使用的是分叉版本,否则不应假设 typeahead.js 会按预期工作。

【讨论】:

  • 需要说明的是.typeahead('destroy')在Bootstrap 2.2.2版本中不可用。
  • 谢谢@Eye。我已经搜索了一段时间,每个帖子都说要使用破坏,但它不起作用。现在我知道为什么了。有人知道替代方案吗?
【解决方案2】:

在 Bootstrap 2.2.2 中没有 .typeahead('destroy') 函数,因此以下内容确实删除了之前绑定的所有侦听器以及它创建的 DOM 元素。

$('#textbox').off()
        .data('typeahead')
        .$menu
        .off()
        .remove();

【讨论】:

  • 我还在使用 Bootstrap 2.3.2,我发现如果我想稍后重新添加预输入,我还必须使用 .data('typeahead', null) 删除预输入对象
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
相关资源
最近更新 更多