当有多个相同类型的输入元素时,如何引用特定范围内的输入元素?

时间:2011-01-07 19:46:31

标签: jquery html css forms

如何为特定范围内的输入元素选择数据?我有多次相同的表单(类“foo-form”),并希望确保我在提交的表单范围内获取隐藏输入的值。范围“this”是否隐含?如果不是,那么什么是在这个范围内选择输入类“foo-text”的语法?可以自由地指出我在jquery文档中的例子 - 我找不到我想要的东西。

$('.foo-form').submit(function() {
    // Store a reference to this form
    var $thisForm = $(this);

});


<form class="foo-form">
<input type="hidden" class="foo-text"/>
<input type="submit" class="button" />
</form>
<form class="foo-form">
<input type="hidden" class="foo-text"/>
<input type="submit" class="button" />
</form>
<form class="foo-form">
<input type="hidden" class="foo-text"/>
<input type="submit" class="button" /> // user clicks this submit button
</form>

3 个答案:

答案 0 :(得分:4)

如果您想要当前表单中的所有隐藏输入元素,请执行以下操作:

$('.foo-form').submit(function() {
    var $hiddenInputs = $('input[type="hidden"]', this);
});

这将为您提供刚刚提交的表单中潜在的许多隐藏输入的列表。如果你想具体使用类foo-text的那个,那么我们可以是那个特定的,并获得它的价值:

$('.foo-form').submit(function() {
    var hiddenValue = $('input.foo-text', this).val();
});

还要记住,如果你想阻止表单正常提交(导致页面更改),你必须在你定义的回调函数结束时返回false:

$('.foo-form').submit(function() {
    ...

    return false;
});

答案 1 :(得分:2)

使用$(this)选择器将与所选的当前类一起使用。因此,如果您要执行alert($('.foo-text', this).val());,您应该获得您点击提交的特定表单的隐藏输入类型的值。当然,需要有隐藏表单字段的值才能获得任何回报。

答案 2 :(得分:2)

值得注意的是,while:

$('input[type="hidden"]',this);

有效,使用时间要快一些(因为the way jQuery implements context searching):

$(this).find('input[type="hidden"]');

更不用说简洁(虽然不是,但必须更多高效)才能使用:

$(this).find('input:hidden');

:hidden pseudo-selector的jQuery API文档。