jquery 表单元素到数组

发布于 2024-12-01 19:07:26 字数 274 浏览 0 评论 0原文

我试图将所有表单元素放入数组,然后使用 jquery 的 $.each() 函数循环遍历它们,并在该函数中获取每个元素的 id 和 title 属性。

我尝试过serializeArray(),但只能获取“名称”和“值”属性。

我需要一些东西来收集所有表单元素,无论它是输入(无论类型)、选择、文本区域,还是无论它是否具有值、被选中还是隐藏。

也许像 $('#form_id').find('input select textarea'); ?

知道如何实现这一目标吗?

I'm trying to get all form elements to array, then loop through them using jquery's $.each() function and within this function get each element's id, and title attributes.

I've tried serializeArray(), but I can only get 'name' and 'value' attributes.

I need something that collects all form elements whether it's input (regardless of the type), select, textarea, and regardless whether it has value, is checked or hidden.

Perhaps something like $('#form_id').find('input select textarea'); ?

Any idea how to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

迟月 2024-12-08 19:07:26

您可以使用 :input 伪类获取所有表单元素:

var elems = $('#form_id').find(':input'); // changed this line

You can get all form elements with the :input pseudo class:

var elems = $('#form_id').find(':input'); // changed this line
月依秋水 2024-12-08 19:07:26

用途:

$('#form_id')[0].elements

它将返回一个包含所有表单元素的nodeList。

jQuery(
  function($)
  {
    $.each($('#form_id')[0].elements,
           function(i,o)
           {
            var _this=$(o);
            alert('id:'+_this.attr('id')+'\ntitle:'+_this.attr('title'));
           })

  }
);

<编辑>
请注意:elements-collecttion 还可能包含字段集或对象等元素,请参阅:http://www.w3.org/TR/html5/forms.html#category-listed

Use:

$('#form_id')[0].elements

It will return a nodeList containing all form-elements.

jQuery(
  function($)
  {
    $.each($('#form_id')[0].elements,
           function(i,o)
           {
            var _this=$(o);
            alert('id:'+_this.attr('id')+'\ntitle:'+_this.attr('title'));
           })

  }
);

<edit>
Please Note: the elements-collecttion may also contain elements like fieldset or object, See: http://www.w3.org/TR/html5/forms.html#category-listed
</edit>

苯莒 2024-12-08 19:07:26

我认为这可以按照你想要的方式工作:

$('#form_id').children('input, select, textarea')

I think this could work the way you want:

$('#form_id').children('input, select, textarea')
肤浅与狂妄 2024-12-08 19:07:26

您可以使用此功能

$.fn.serializeAssoc = function() {
    var formData = {};
    this.find('[name]').each(function() {
        formData[this.name] = this.value;  
    })
    return formData;
};

//And Use it like this

objArr = $('#FormID').serializeAssoc();

You can Use this function

$.fn.serializeAssoc = function() {
    var formData = {};
    this.find('[name]').each(function() {
        formData[this.name] = this.value;  
    })
    return formData;
};

//And Use it like this

objArr = $('#FormID').serializeAssoc();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文