【问题标题】:Detect when autocomplete is visible检测自动完成何时可见
【发布时间】:2009-10-21 03:18:26
【问题描述】:

我在我的表单中捕捉到按键输入,以防止它提交表单,除非它是最后一个输入; otherwise, it acts as a tab (finds the next input and focuses on it).

如果选择了浏览器自动完成,关于如何触发event.preventDefault()的任何想法?

【问题讨论】:

  • 我刚在firefox上试了一下,发现自动补全功能甚至连firebug都检测不到,也就是不能检查。我想这会降低从 JavaScript 中检测到它的几率
  • 无论如何,看看这个stackoverflow.com/questions/1567610/…

标签: javascript events forms


【解决方案1】:

我不知道您是否正在使用特定的插件,或者您是否有能力轻松修改自动完成源代码,但我会尝试做这样的事情:

  • 查找用于触发自动完成显示的函数
  • 在触发自动完成的可见性时设置一个布尔值(true 表示可见,false 表示不可见)
  • 每当您尝试捕捉输入(或制表符)时检查布尔值的状态

请注意,您必须在自动完成对象的上下文中公开可访问布尔值。

同样,如果您的实现不知道具体细节,很难说出如何最好地更改它,但它可以像这样工作:

var Autocomplete = {
  bIsVisible: false,
  display: function() {
    // toggle visibility of the autocomplete
    this.bIsVisible = !this.bIsVisible;
  }
}

然后您可以通过执行以下操作来使用它:

alert(Autocomplete.bIsVisible); // returns false
Autocomplete.display(); // triggers the display of the autocomplete
alert(Autocomplete.bIsVisible); // returns true

【讨论】:

  • 我没有使用自动完成插件,我使用的是浏览器自动完成。否则这会起作用
猜你喜欢
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 2011-12-08
  • 2010-11-02
  • 2018-11-22
  • 1970-01-01
相关资源
最近更新 更多