1

私はすっごく... 近くにいますが、おそらくあなたにとって本当に簡単な小さなことに行き詰まっています。アイデアは、各チェックボックスの値を非表示フィールドの値に追加することです。

独自の変数 ID を持つ 2 番目 (またはそれ以上のフォーム) を追加した瞬間、それはバラバラになります。jQuery コードの最初の部分が機能することは知っていますが、ここに入る方法がわかりませんloader_id

$('#fileset-'+ loader_id +' input').click(updateFileField);

ここでIDをハードコーディングすると、残りが美しく機能するため、それが私が台無しにしていると思います。

以下は完全なコードであり、ここでも見つけることができます

<div id="fileset-1" class="fileset">
<input type="checkbox" value="set1">
<input type="checkbox" value="set2">
<input type="checkbox" value="set3">
</div>  
File 1 <input type="text" val="" id="file-1" class="filestosend" /><br />

<div id="fileset-2" class="fileset">
<input type="checkbox" value="seta">
<input type="checkbox" value="setb">
<input type="checkbox" value="setc">
</div> 
File 2 <input type="text" val="" id="file-2" class="filestosend" />​

これがjQueryの部分です

 function updateFileField() {

 var allVals = [];
 var loader_id = $(this).parent('div').attr('id').replace('fileset-', '');
     $('#fileset-' + loader_id + ' :checked').each(function() {
       allVals.push($(this).val());
     });         
     $('#file-' + loader_id ).val(allVals);
  }
 $(function() {
     $('#fileset-'+ loader_id +' input').click(updateFileField);

});

ご協力いただきありがとうございます!

4

2 に答える 2

3

それはあなたが探していたものですか?

$(".fileset :checkbox").on("change", function() {
    var div = $(this).parent();
    var id = div.attr("id").split("-")[1];
    var values = [];
    div.find(":checked").each(function() {
        values.push(this.value);
    });
    $("#file-" + id).val(values.join(","));
});

デモ: http://jsfiddle.net/fXMrj/52/

于 2012-05-25T19:06:12.820 に答える
0

ここで、次の部分loader_idは未定義です。

$(function() {
     $('#fileset-'+ loader_id +' input').click(updateFileField);

});
于 2012-05-25T19:10:00.980 に答える