0

我将一些表单附加到一个 div 容器,表单非常依赖于所选的选项,所以我没有任何相关的 id,因为可以不止一个,

所以我所做的只是

$('.item').each(function(index,element){

    var form= $(element).find('form');
    var formFields = form.serialize();

    console.debug("FORM: "+ formFields);

    //--- do something with those fields
});

但是总是空的,所以我尝试改变这一行

var formFields = getFormData(form);

并添加了这个功能

function getFormData($form){
    var indexed_array = {};

    var selectors = "input,select";

    $form.find(selectors).each(function(i,e){

        var type    = $(e).attr('type');
        var name    = $(e).attr('name');
        indexed_array[name] = value;

    });

    $form.find('textarea').each(function(i,e){
        var name  = $(e).attr('name');
        var value = $(e).html();
        indexed_array[name] = value;
    });


    return indexed_array;
}

它有效,但问题是复选框或单选按钮未选中

所以我尝试更改此选项的选择器

var selectors = ":input"; //didnt work
var selectors = "input[type=text],input:checked,select"; //didnt work
var selectors = "input[type=text],input[type=checkbox]:checked,input[type=radio]:checked,select"; //didnt work

那些选择器尝试,并没有检索我任何东西,就像 jquery 没有将表单重新转换为表单,并且即使选择了输入,检查与否也没有检测到,有什么建议吗?

HTML ,记住可以不止一个

<div class="column-2 item">
    <div class="widget-item">
        <span>12 Months Traffic Trend Unique Visits </span>
        <div class="widget-option">        
            <form>    
            <div class="form-item">   
                <div class="form-label">Compare With Last Year</div>
                <div class="form-element"><input type="checkbox" value="1" name="compareLastYear"></div>
             </div>
            </form>
        </div>
    </div>
</div>
4

1 回答 1

0

所以我没有任何相关的id,因为可以不止一个,

然后使用一个类来允许多个实例:

<form class='formClass'>

然后你可以做

$('.formClass').each(function(k,v){

    var form = v; // this is the form
    var fields = $(v).serialize();
});

看这个小提琴

于 2013-02-15T12:32:54.397 回答