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

时间:2012-06-28 16:02:31

标签: javascript jquery forms selector subform

说我有以下表格:

​<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()获取所有name-&gt;值对。例如。我知道我可以使用以下方式从f获取信息:

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

如果只需要sub_part格式f div中的name-&gt;值对,该怎么办?在这种情况下,jquery选择器会是什么?对于本练习,我不想改变html的结构。

如果我遇到问题,请查看这个小提琴:http://jsfiddle.net/gu9XB/4/

注意方法我试图选择子表单不起作用。

5 个答案:

答案 0 :(得分:4)

只需序列化div中的输入。你也使用.sub_part所以它没有选择div。如果已有ID,您只需按ID选择即可使其更快

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

这是一个工作小提琴http://jsfiddle.net/gu9XB/21/

答案 1 :(得分:2)

使用此:

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

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

以下是DEMO

答案 2 :(得分:1)

使用以下代码 它适用于你的情况

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

使用此CSS选择器

$('#e > div')

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

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

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