我正在尝试编写一个通用的javascript函数(使用jQuery)来获取特定表单上的所有输入元素 - 并将它们作为json返回。
function getFormDataAsJson(sFormId)
{
// read input attributes from form; return as json
var form = $(sFormId);
if (form != null)
{
var inputs = $('input', form);
var json = {};
for(i = 0; i < inputs.length; ++i)
{
var next = inputs[i];
var key = $(next).attr('id');
var val = $(next).val();
if( val != null && key != null)
json[key] = val;
}
return json;
}
}
上面的错误在以下行中:
var inputs = $('input', form);
表单是表单对象。如何以给定的形式获取所有输入元素?
答案 0 :(得分:2)
更改
var form = $(sFormId);
到
var form = $('#'+sFormId);
另外,如果这是你唯一的表格,请使用:
var inputs = $('form :input');
$('form :input').each(function(){
var key = this.id;
var val = this.value;
.....
});
答案 1 :(得分:2)
$("form").each(function(){
$(this).find(':input') //<-- Should return all input elements in that specific form.
});
或者您可以使用
var form = $('#'+sFormId);
这会对你有帮助。
答案 2 :(得分:1)
您忘记使用下面的选择器。使用#
选择器
var form = $('#'+sFormId);
function getFormDataAsJson(sFormId)
{
var form = $('#'+sFormId);
if (form != null)
{
var inputs = $('input', form);
var json = {};
for(i = 0; i < inputs.length; ++i)
{
var next = inputs[i];
var key = $(next).attr('id');
var val = $(next).val();
if( val != null && key != null)
json[key] = val;
}
return json;
}
}
答案 3 :(得分:1)
&#39;将从我最近的一个项目中给你一个提示。
形式:
<form method="post" action="" id="form">
<input type='text' class='textInput' name="One" id="one" value='0'>
<input type='text' class='textInput' name="Two" id="two" value='0'>
<input type='text' class='textInput' name="Three" id="three" value='0'>
<input type='text' class='textInput' name="Four" id="four" value='0'>
<input type='text' class='textInput' name="Five" id="five" value='0'>
<input type='text' class='textInput' name="Six" id="six" value='0'>
<input type='text' class='textInput' name="Seven" id="seven" value='0'>
<input type='text' class='textInput' name="Eight" id="eight" value='0'>
<input type="submit" id='submit' value="Submit">
</form>
<p id='output'></p>
和JavaScript:
$('form').submit(function(){
$('.textInput').each(function(){
if($(this).val() != '0')
{
$('#output').text($('#output').text()+ ' ' + $(this).attr('name') + ':' + $(this).attr('value') );
}
});
return false;
});
我希望它有所帮助...
答案 4 :(得分:0)
您可以使用$('#'+sFormId+' input')
或form.find('input')