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 に答える