JS/jQuery检查元素是否可类型化



我想检查一个元素是否可以键入,特别是document.activeElement,这样我就可以使用shift+键作为键盘快捷键,而不会妨碍用户键入任何可能关注的输入。

我该如何决定一个元素是否可以键入?

使用isContentEditable属性

$('my-element-selector').is('[contenteditable="true"]')

$('my-element-selector').get(0).isContentEditable

或者试试这个小提琴

<div id='el1'></div>
<input id='inp1' type='text'>
function isEditable($element)
{
  return $element.is( "input:text:not(:disabled):not([readonly]), textarea:text:not(:disabled):not([readonly])" ) ;
}
console.log( isEditable( $('#el1') ) );
console.log( isEditable( $('#inp1') ) );

再次更新小提琴以增加对更多输入ty 的支持

function isEditable($element)
{
  return $element.is( "input[type!='radio'][type!='checkbox'][type!='date']:not(:disabled):not([readonly]), textarea:text:not(:disabled):not([readonly])" ) ;
}

如果检查document.activeElement.tagName,您可以决定元素是输入还是文本区域。

如果是输入,请检查$(document.activeElement).attr("type"),它将为您提供输入类型。如果它不是按钮、单选框、复选框等,那么它就是一个可编辑的输入字段。

此外,如果$(document.activeElement).attr("contenteditable")为true,则它将是一个可编辑字段。

最新更新