jquery中特定表单的getElementsByTagName

时间:2015-04-01 10:01:52

标签: javascript jquery json

我正在尝试编写一个通用的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);

表单是表单对象。如何以给定的形式获取所有输入元素?

5 个答案:

答案 0 :(得分:2)

更改

var form = $(sFormId);

var form = $('#'+sFormId);

- jQuery ID selector

另外,如果这是你唯一的表格,请使用:

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')

执行此操作