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

ome*_*ega 12 html javascript

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

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

Den*_*ret 26

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

$('#myid').is('input, select')
Run Code Online (Sandbox Code Playgroud)

或者可能

$('#myid').is('input, textarea, select')
Run Code Online (Sandbox Code Playgroud)

如果你想也包括textarea

要么

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

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

您拥有jquery选择器的全部功能,可以根据您的具体需求调整查询.

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


jfr*_*rej 24

尝试使用: 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;
}
Run Code Online (Sandbox Code Playgroud)

您可以扩展它以检查<textarea>.

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

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

  • 这个的优点是它不使用jquery。 (3认同)

jba*_*bey 5

您可以使用DOM元素的nodeNametype属性来确定。无需外部库。

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

    return nodeName === 'SELECT' || 
        (nodeName === 'INPUT' && 
         element.type.toLowerCase() === 'text');
};
Run Code Online (Sandbox Code Playgroud)

工作示例:http : //jsfiddle.net/ytHQD/