【问题标题】:Check if currently active element is any kind of input检查当前活动元素是否是任何类型的输入
【发布时间】:2016-04-07 07:19:49
【问题描述】:

我正在尝试检测当前活动元素是否是任何类型的输入字段。目前我有这个:

var activeElement = document.activeElement

if (activeElement && (activeElement.tagName.toLowerCase() === 'input' || 
    activeElement.tagName.toLowerCase() === 'textarea' || 
    activeElement.tagName.toLowerCase() === 'select' || 
    activeElement.tagName.toLowerCase() === 'button')) {
    return false
}

有没有更好的方法来做到这一点?我正在使用 Vue JS,所以如果有 Vue API 的解决方案也可以。

【问题讨论】:

  • select, button 呢?
  • @RayonDabre 哦,是的,你是对的,这也是……更新了我的代码

标签: javascript vue.js


【解决方案1】:

您可以将所有要检查的元素类型放入一个数组中,然后检查您的活动元素是否在其中:

var activeElement = document.activeElement;
var inputs = ['input', 'select', 'button', 'textarea'];

if (activeElement && inputs.indexOf(activeElement.tagName.toLowerCase()) !== -1) {
    return false;
}

【讨论】:

  • if 语句应该是:if (activeElement && inputs.indexOf(activeElement.tagName.toLowerCase()) !== -1) {
【解决方案2】:

使用 Jquery 你可以尝试以下方法

if(elem.is('input')){
//yes it an input element.
}

如果你想检查特定的输入类型

if(elem.is('input:radio')){
//yes it an input type = 'radio' element.
}

【讨论】:

  • 不知道为什么你会反对 jquery 解决方案。许多人使用jquery。只需确保将您的 elem 包装在 jquery 选择器 let isInput = $(document.activeElement).is('input');
猜你喜欢
  • 2013-04-21
  • 2014-09-19
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多