-1

2 つの div が隣り合って配置され、ADD ボタンがあります。以下は html です。

<div class="_25">
    <label for="25">Mode</label>
    <select name="mode">
        <option value="0">Select One</option>
        <option value="fcl/fcl">FCL/FCL</option>
   </select>
</div>

ADD ボタンをクリック<select></select>すると、同じ名前の別の要素を配列に追加したい。さまざまな方法を試しましたが、それらを追加しようとしても役に立ちませんでした。例: 最初の選択要素にはname=mode[0]、2 番目mode[1]などがあります。

4

5 に答える 5

2

そのように名前属性を作成する必要はありませんmode[]。選択要素に名前属性を追加すると、サーバー側に配列ができます。ただし、別の名前で選択要素を作成したい場合は、次を試すことができます。

$('#add').click(function(e) {
    $('select').last().clone().prop('name', function(_, name){
        return name.replace(/\d+/, function(num) {
            return +num + 1;
        }); 
    }).appendTo('#hell');
});

http://jsfiddle.net/vSZ79/

于 2013-04-19T05:08:36.057 に答える
0

ボタンを追加し、選択名をmode[]

<div class="_25">
    <label for="25">Mode</label>
    <select name="mode[]">
        <option value="0">Select One</option>
        <option value="fcl/fcl">FCL/FCL</option>
   </select>
    <input type="button" id="add" value="ADD" />
</div>

jQuery:

$('#add').click(function() {
    var elem = $(this).closest('div').find('select:last');
    elem.clone(true).insertAfter(elem);
});

http://jsfiddle.net/samliew/FkrkH/

サーバー側では、変数modeは配列です。を使用してテストできますmode[0]

于 2013-04-19T05:10:29.660 に答える
0

jQuery を使用して各要素をループし、正規表現を少し利用して値をインクリメントすることができます。また、一貫性を保つために、mode[0] から始める必要があります。

$('.add').click(function(){
   var currentName = $('select:last').attr('name'); // starting name should be mode[0]
   var pattern =  /^mode\[(\d)\]$/; 
   var newName = pattern.exec(currentName)[1];
   newName++;
   newName = "mode["+newName+"]";
   $('select').attr('name', newName).appendTo('div._25');
});
于 2013-04-19T05:19:12.657 に答える