【发布时间】:2010-07-21 15:22:07
【问题描述】:
我在页面上有多个表单,我需要获取提交的表单的值,但没有指定表单。
$(document).ready( function (){
$('form').submit( function(){
return submitForm()
});
});
并且在 .js 文件中 submitForm() 应该标识提交的表单的 id。怎么可能?
我得到了表单[0]的值,而不是被点击的那个
【问题讨论】:
我在页面上有多个表单,我需要获取提交的表单的值,但没有指定表单。
$(document).ready( function (){
$('form').submit( function(){
return submitForm()
});
});
并且在 .js 文件中 submitForm() 应该标识提交的表单的 id。怎么可能?
我得到了表单[0]的值,而不是被点击的那个
【问题讨论】:
不确定submitForm() 是做什么的,但我假设您在其中使用了this。
如果是这样,请尝试:
$('form').submit( function(){
return submitForm.call( this );
});
这样做应该会将被点击的表单的上下文发送到submitForm() 调用。
所以在submitForm() 中,您可以使用this 来引用正确的形式,或者在jQuery 对象中使用$(this)。
编辑:
这是我的意思的一个例子:http://jsfiddle.net/pXwTE/
【讨论】:
您可以像这样将每个表单的 id 传递给您的 submitForm 函数:
$j(document).ready( function (){
$j('form').submit( function(){
return submitForm($j(this).attr('id'));
});
});
要获取所有值,具体取决于您需要对它们执行的操作,您可以像这样使用序列化:
$j(document).ready( function (){
$j('form').submit( function(){
alert($j(this).serialize());
});
});
或者您可以像这样遍历表单的所有输入:
$j(document).ready( function (){
$j('form').submit( function(){
$j(':input', this).each(function(){
alert($j(this).val());
});
});
});
我为此创建了一个小提琴:http://jsfiddle.net/2HRjF/1/
【讨论】: