从名称中查找输入类型

时间:2011-08-12 08:53:02

标签: jquery

有没有办法从名称中获取输入的类型?例如:对于<input type="text" name="abc" />我想知道它是输入,textarea还是select。那么,是否可以从名称中找到输入类型?

3 个答案:

答案 0 :(得分:4)

var eltype = $('*[name="abc"]').prop('tagName');

示例:http://jsfiddle.net/UDcYD/

修改

正如@Wesley Murch所说,tagName属性返回一个大写字符串,如果你需要小写,只需做类似的事情:

var eltype = $('[name="abc"]').prop('tagName').toLowerCase();

@Wesley Murch再次说,*不是必要的infact [name="abc"]就足以选择名为abc的元素

<强> EDIT2

tagName是您使用[name="abc"]选择的jQuery对象的属性,它表示其标记名称。在您的问题中,您将其称为类型,但实际上正确的名称是标记名称。

<强> EDIT3

如果您使用的是jQuery版本&lt; 1.6你必须使用attr而不是prop因为jQuery 1.6引入了prop函数

var eltype = $('[name="abc"]').attr('tagName').toLowerCase();

无论如何我的建议是升级jQuery,如果没有太多的代码依赖于你拥有的旧jQuery

答案 1 :(得分:0)

用于检索输入类型:

$('*[name="abc"]').attr('type');

用于检索标记名称:

$('*[name="abc"] :eq(0)').tagName;

答案 2 :(得分:0)

您可以使用以下内容:

$element = $('*[name="target"]');
$result = $('#result');
if ($element.prop('tagName') == 'INPUT') {
    $result.text($element.attr('type'));
}
else {
    console.log('foo');
    $result.text($element.prop('tagName').toLowerCase());
}

这应适用于输入和<select>等。

<强> Working Example