且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

检查输入的类型是否为“文本/号码/电子邮件/等"?

更新时间:2023-11-28 16:50:34

将其发布为答案是因为可以解决问题,但严格意义上并不是我要的.

Posting this as an answer because fixes the problem, but it's not strictly what I'm asking for.

我还在等待更清洁的解决方案.

I'm still waiting for a cleaner solution.

var notTextual = [
    'button',
    'checkbox',
    'hidden',
    'image',
    'radio',
    'reset',
    'submit'
];

if (element.getAttribute === undefined) {
    return false;
}

var eTag  = element.tagName;
var eType = element.getAttribute('type');
var isTextInput = (eTag === 'INPUT' || eTag === 'TEXTAREA') && !notTextual.contains(eType);
var isEnabledInput = element.disabled === false && element.readOnly === false;
var isContentEditable = ( element.contentEditable && element.contentEditable === true );

// stop for enabled text inputs, selects and contentEditable areas
return (isTextInput && isEnabledInput) || eType === 'SELECT' || isContentEditable;