如何在JavaScript中检查元素类型

9

我有一个情况,想将 <select> 标签转换为 <input type="text">,并将 <input type="text"> 转换为 <select>,但需要使用某些条件。

那么如何知道这个元素是使用 id 属性的文本类型还是选择类型


1
“select”不是一种输入类型,因此没有“select”类型。输入的“type”属性和HTMLElement的“nodeType”属性是两个不同的东西。 - Ram
可能是重复的问题:使用jQuery获取元素类型 - Blowsie
1
抱歉,我是指 tagName 而不是 nodeType - Ram
你的条件是什么? - Voonic
5个回答

12

还有一个纯JavaScript解决方案:

function toggle(a){
    if(a.tagName === 'INPUT'){
        a.outerHTML = '<select id="toggle"></select>';
    }else{
        a.outerHTML = '<input type="text" id="toggle"/>'
    }
}

http://jsfiddle.net/M6qXZ/1/

2018 ES6

e => e.outerHTML = e.tagName === "INPUT" ? "<select id='toggle'></select>" : "<input id='toggle'/>"

8

通过使用

$("#inputID").attr("type");

如果你提醒上方,你将得到输入元素的类型,然后你可以相应地应用检查。
参考链接:http://api.jquery.com/attr/ 更新:
使用检查。
if(!$("#inputID").is("select")) {
    // the input field is not a select
}

从搜索链接中得到,但未经测试。


1
对于<select>标签它显示为未定义,但对于<input>标签却可以正常工作。 - user2198005

2
您可以使用.is()来测试元素是否为类型x,例如:
使用:text选择器来测试文本输入元素。
if($("#inputID").is(":text")){
    //to test for text type
}

使用 元素选择器 测试选择元素。
if($("#inputID").is("select")){
    //to test for select
}

2

使用jQuery获取元素的类型:

var elementType = $("#myid").prop('tagName');

使用jQuery获取输入框的类型属性:

var inputType = $("#myid").attr('type');


1
这段文字的英译中文如下:

条件可以是例如:

   if($('#whateverid').attr('type') == "text")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接