1

要素のname 属性を変更したいのです<input>が、ここに複数の name がありstring[0][]ます。リンクをクリックした後、それらに change‍‍<code>0 を追加し、1代わりに allを置き換えます0。Jqueryでどうですか?

デモ: http://jsfiddle.net/2hXk5/

私は試してみましたが、うまくいきません:

<div class="ch">
    <p>
        <input type="checkbox" name="cDA[0][]">
        <input type="checkbox" name="cDA[0][]">
        <input type="checkbox" name="cDA[0][]">
        <input type="checkbox" name="cDA[0][]">
    </p>
    <p>
        <input type="checkbox" name="cFE[0][]">
        <input type="checkbox" name="cFE[0][]">
        <input type="checkbox" name="cFE[0][]">
        <input type="checkbox" name="cFE[0][]">
    </p>
    <p>
        <input type="checkbox" name="cYG[0][]">
        <input type="checkbox" name="cYG[0][]">
        <input type="checkbox" name="cYG[0][]">
        <input type="checkbox" name="cYG[0][]">
    </p>
    <a href="" class="adding">Add</a>
</div>
​


$('a.adding').live('click change', function (e) {
    e.preventDefault();
    $clone = $(this).closest('.ch').clone().insertAfter('.ch');
    $clone.find('input[type="checkbox"]:contains("0")').prop('1');
})​
4

1 に答える 1

0

私があなたを正しく理解していれば.attr()、コールバック関数で使用したいと考えています:

$('input[type="checkbox"]').attr('name',function(i,str) {
    return str.replace('0','1');
});

更新: これは、実際に必要と思われるすべてのことを行う完全なバージョンです。を使用str.match(/\d+/)して属性の最初の数値文字列を抽出し、nameそれを整数に変換してから、 を使用して次の整数に置き換えますstr.replaceinsertAfterパーツが更新されたため、 LAST の後にのみ挿入されることに注意してくださいdiv.ch

$(document).on('click change', 'a.adding', function(e) {
    e.preventDefault();
    $div = $(this).closest('.ch');
    $clone = $div.clone().insertAfter($div);
    $clone.find('input[type="checkbox"]').attr('name', function(i, str) {
        var int = parseInt(str.match(/\d+/)[0],10);
        return str.replace(int, (int+1));
    });
});​

http://jsfiddle.net/mblase75/3SGNw/

于 2012-12-07T14:32:15.820 に答える