在jQuery中确定输入与文本区域

在jQuery中确定输入与文本区域,jquery,forms,Jquery,Forms,我希望遍历一个表单,将每个元素添加到一个区域中。问题是其中一些元素是select、input和textbox。我知道我可以使用:input来解决这个问题,但我真的不需要。问题是,我无法确定如何查看元素是否为textarea、input、select等。我需要正确执行此操作,因为据我所知,jQueryinputsomeinput.val对于输入非常有效,但对于textarea,我可能需要jQueryTextAreaSomeTextArea.text。我不确定这是否存在 无论如何,到目前为止,我的函

我希望遍历一个表单,将每个元素添加到一个区域中。问题是其中一些元素是select、input和textbox。我知道我可以使用:input来解决这个问题,但我真的不需要。问题是,我无法确定如何查看元素是否为textarea、input、select等。我需要正确执行此操作,因为据我所知,jQueryinputsomeinput.val对于输入非常有效,但对于textarea,我可能需要jQueryTextAreaSomeTextArea.text。我不确定这是否存在

无论如何,到目前为止,我的函数如下:

function getAllFormElements(id) {

    var elements = new Array();

    jQuery(id).children().map(function(){

        for (var index = 0; index < children.length; index++) {

            elements[i] = jQuery(children[i]).val();

        }

    })

        return elements;
}

$.val适用于输入和文本区域。对于像div这样本身没有值的东西,您只需要$.text。

您应该能够使用jQuery的.is函数-只需将选择器传递给.is,如果元素与选择器匹配,它将返回true。因此,要查看是否有文本区,只需检查:

if($(this).is("textarea")) { doStuff(); }
与、和元素同样有效

如果仍要确定与:input选择器匹配的元素的实际类型,可以与一起使用:


您是否正在查找$children[i].attrtagName,返回元素的标记,可以是select、input或textarea?

查看nodeName属性

jQuery(id).children().map(function(){
    console.log( children[i].nodeName.toLowerCase() );
});

您可以但不必使用jQuery开销中的is方法。

查看jQuery的文档,您可以使用$:input轻松获得所有表单输入:

描述:选择所有输入、文本区域、选择和按钮元素。 :输入选择器基本上选择所有表单控件

.val也适用于文本区域,但有一个警告。。。参考文件如下:


Frederic在我写这篇文章的时候发布了他的答案,他使用is的解决方案肯定被证明是正确的

太好了。正是我需要的。谢谢你。+1,很好的解决方案Frédéric,今天找到了,也为我工作@aboutblank:你应该将这个答案标记为已接受,因为它似乎也解决了你的问题texarea@DerkArts.even我觉得select和textarea包括iTunes和nodeName是一样的,但要小心这种情况。根据文档类型HTML或XML,返回值的大小写将不同于大写或原样。
jQuery(id).children().map(function(){
    console.log( children[i].nodeName.toLowerCase() );
});