如何确定元素是下拉列表元素还是文本输入元素,给定其ID?

时间:2012-07-10 15:03:37

标签: javascript html

在Javascript中,给定元素的id(以String格式),如何检查元素的id是否引用下拉列表元素,或者文本输入元素?

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

4 个答案:

答案 0 :(得分:26)

如果您已经包含了jquery,则可以使用the is function

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

或者

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

如果你想包括textarea

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

(如果它是textare或下拉列表或输入不是按钮,则返回true。)

您拥有jquery selectors的全部力量,可以根据您的具体需求调整您的查询。

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

答案 1 :(得分:21)

尝试使用: 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的answer,因为它使用nodeName并且格式更好。

显然是nodeName has wider browser support.

答案 2 :(得分:5)

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

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

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

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

答案 3 :(得分:0)

$('#myId')[0].tagName

您可以检索dom元素,然后检查标记名称