JS/jQuery 检查元素是否可键入
JS/jQuery check if element is typable
我想检查一个元素是否可以输入,特别是 document.activeElement
这样我就可以使用 shift+key 作为键盘快捷键,而不会妨碍用户输入可能关注的任何输入的能力.
我将如何决定一个元素是否可以输入?
$('my-element-selector').is('[contenteditable="true"]')
或
$('my-element-selector').get(0).isContentEditable
或者试试这个 fiddle
<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') ) );
再次更新了 fiddle 以添加对更多输入类型的支持
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") 为真,那么它将是一个可编辑字段。
我想检查一个元素是否可以输入,特别是 document.activeElement
这样我就可以使用 shift+key 作为键盘快捷键,而不会妨碍用户输入可能关注的任何输入的能力.
我将如何决定一个元素是否可以输入?
$('my-element-selector').is('[contenteditable="true"]')
或
$('my-element-selector').get(0).isContentEditable
或者试试这个 fiddle
<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') ) );
再次更新了 fiddle 以添加对更多输入类型的支持
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") 为真,那么它将是一个可编辑字段。