如何为特定范围内的输入元素选择数据?我有多次相同的表单(类“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>
答案 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文档。