jquery如何在子表单div中选择表单元素

Posted

技术标签:

【中文标题】jquery如何在子表单div中选择表单元素【英文标题】:jquery how to select form elements in sub-form div 【发布时间】:2012-06-28 16:02:30 【问题描述】:

假设我有以下表格:

​<form id="f">
    <input name="a"/>
    <input name="b"/>
    <div id="sub_part">
        <input name="c"/>
        <input name="d"/>
    </div>
</form>
<form id="e">
    <input name="a"/>
    <input name="b"/>
    <div id="sub_part2">
        <input name="c"/>
        <input name="d"/>
    </div>
</form>

我通常可以使用.serialize() 获取所有名称-> 值对。例如。我知道我可以通过以下方式从f 表格中获取信息:

$('form#f').serialize();

如果只想要sub_part div 中f 形式的名称-> 值对怎么办?在这种情况下,jquery 选择器会是什么?对于本练习,我不想更改 html 的结构。

请查看我列出问题的这个小提琴:http://jsfiddle.net/gu9XB/4/

注意我尝试选择子表单的方式不起作用。

【问题讨论】:

当 jQuery 文档说 .serialize()“在表示一组表单元素的 jQuery 对象上操作”时,它令人困惑。它没有,唯一官方支持的元素(作为容器)是form。也许他们会修复文档。见相关bug report。 【参考方案1】:

只需序列化 div 内的输入。您还使用了 .sub_part 所以它没有选择 div。如果已经有 ID,您可以通过 id 选择以使其更快

('#sub_part input').serialize();

这是一个有效的小提琴http://jsfiddle.net/gu9XB/21/

【讨论】:

【参考方案2】:

使用这个:

$('#but1').click(function() 
    var data = $('form#f').serialize();
    alert(data);
);

$('#but2').click(function() 
    var data = $('#f #sub_part *').serialize();
    alert(data);
);​

这里是DEMO

【讨论】:

为什么在已经给出 ID 并且速度更快的情况下使用“表单”选择器?还使用#f #sub_part?您可以只使用 ID '#sub_part',这是选择元素的最快方式【参考方案3】:

使用以下代码 它会在你的情况下工作

 $('#f #sub_part input').serialize();

【讨论】:

这里是 jsfiddle 工作,即使你在两种形式中都有相同的 id jsfiddle.net/8XXDn/1【参考方案4】:

如其他答案所述,serialize() 方法不适用于 div。解决这个问题的一种方法是创建一个 jQuery 对象,它将处理并将您选择的元素附加到此:

var data = $('<form>').append($('form#f .sub_part')).serialize();

【讨论】:

【参考方案5】:

使用这个 CSS 选择器

$('#e > div')

这将选择sub_part div。匹配发生是因为它是表单元素的直接子元素。如果sub_part中有嵌套的div,则不会受到影响。

您还有一个带有 sub_part 的重复 ID。您应该将 id 更改为一个类或更改其中一个 id 的名称。

http://jsfiddle.net/dceast/gu9XB/15/

【讨论】:

此方法在 jsfiddle 示例中对我不起作用。如果您认为它有效,请使用我提供的 jsfiddle 发布一个有效的示例。 您应该在表单、输入、文本区域上进行序列化,或者选择不是子 div,因此您需要将其拆分。 jsfiddle.net/dceast/gu9XB/15

以上是关于jquery如何在子表单div中选择表单元素的主要内容,如果未能解决你的问题,请参考以下文章

JQuery如何循环取出表单元素ID

Jquery选择器分类:基本选择器,层次选择器,过滤选择器,表单选择器。

如何动态添加带有引导表单元素的 div?

关于在子表中创建限制性记录。 (Oracle 表单生成器)

jQuery表单选择器简单介绍

html css js总结