2016-09-28 6 views
0

私は2つのフォームを持つページを持っています。私はページ上のすべてのフォームを順番に調べ、自分のサーバーに送るためにデータをシリアル化することができます。任意のフォームのチェックボックスがチェックされている場合にのみ、配列にデータをシリアル化/追加することが可能かどうか疑問に思っていました。特定のフィールドに値jQueryがある場合は、特定のフォームのフォームデータをシリアル化します。

<form class="states_list"> 
    <input type="checkbox" class="selected_state" name="active_state" value="<?php echo $state['id']; ?>" 
    <input type="text" class="col-md-10" name="pdf_price" id="pdf_price" value="<?php echo $state['pdf_price']; ?>"> 
    </form> 
<button type="button" class="saveStates btn btn-success">Save</button> 
私はクラス selected-stateとチェックボックスが(チェックされている)の値を持っているかどうかを確認する必要があり

、その後、

Javascriptを

$('body').on('click', '.saveStates', function() { 
    $('.states_list').each(function (key, value) { 
      forms.push($(this).serialize()); 
    }); 

HTML: はここに私のコードですそのフォームをformsアレイに追加します。私はこのようなことを考えていた:

$('.states_list').each(function (key, value) { 
    if($('.selected_state').val()){ 
     forms.push($(this).serialize()); 
} 
}); 

しかし、それは動作しません。 何か助けを歓迎します。

+0

try $( 'selected_state')。( ":checked") –

答えて

1

あなたはそれをフィルタリングすることができ可能性がフォームを送信するためにチェックされているかどうかを確認する必要がある場合:

$('body').on('click', '.saveStates', function() { 
    $('.states_list').has('.selected_state:checked').each(function(key, value) { 
    forms.push($(this).serialize()); 
    }); 
}); 

しかし、あなただけのコードである可能性があり:

$('body').on('click', '.saveStates', function() { 
    var forms = $('.states_list').has('.selected_state:checked').serializeArray(); 
    console.log(forms) 
}); 
+0

ありがとう、これはトリックです。最初のオプションは、すべてのフィールドの文字列ではなく、すべての単一フォームの配列を取得するので、私の使用例にとっては優れています。 –

+0

@MihailIvanchev私はオブジェクトの配列を返す 'serializeArray()'を使って2番目のものを更新しました –

+0

ありがとうございますが、バックエンドで 'parse_str()'で'foreach'サイクル。 –

0

問題が発生するかどうかはわかりません。

あなただけ​​を使用してチェックボックスを使用すると、 if ($(this).is(":checked")) forms.push($(this).serialize());

+0

'this'は' form'要素rを参照します。 OPのコードを控える –

+0

私の悪い($(this)).is( ":checked"))。ここでは現在のターゲットとなっているチェックボックスを参照していますが、2番目のものはOPコードから直接取得しています –

関連する問題