25

在 Javascript 中,给定id元素的 (String格式),我如何检查id元素的 是指下拉列表元素还是文本输入元素?

true如果id引用下拉列表 ( <select>) 元素或文本输入元素,则该函数应返回,false否则。

4

4 回答 4

41

尝试使用: document.getElementById('idNameGoesHere').tagName

所以函数可能是:

function isSelectOrTextField(idName) {
    var element = document.getElementById(idName);
    if(element.tagName === 'SELECT') {return true;}
    if(element.tagName === 'INPUT' && element.type === 'text') {return true;}
    return false;
}

你也可以扩展它来检查<textarea>

编辑: 或者选择 jbabey 的答案,因为它正在使用nodeName并且格式更好。

显然nodeName有更广泛的浏览器支持。

于 2012-07-10T15:05:41.140 回答
30

如果您已经包含 jquery,则可以使用is 函数

$('#myid').is('input, select')

或许

$('#myid').is('input, textarea, select')

如果你还想包括 textarea

或者

$('#myid').is('input:not([type="button"]), textarea, select')

(如果它是文本或下拉菜单或不是按钮的输入,则返回 true)。

您拥有jquery 选择器的全部功能,可以使您的查询适应您的确切需求。

演示: http: //jsfiddle.net/ELuEJ/(尝试更改html)

于 2012-07-10T15:05:27.487 回答
8

您可以使用 DOM 元素的nodeNametype属性来确定这一点。不需要外部库。

var isSelectOrTextInput = function (element) {
    var nodeName = element.nodeName;

    return nodeName === 'SELECT' || 
        (nodeName === 'INPUT' && 
         element.type.toLowerCase() === 'text');
};

工作样本:http: //jsfiddle.net/ytHQD/

于 2012-07-10T15:14:09.910 回答
0
$('#myId')[0].tagName

您可以检索 dom 元素,然后检查 tagName

于 2012-07-10T15:08:43.157 回答