1

動的に複製されるフィールドがあります。入力フィールドのクラスと親スパンを変更できないように見えることを除いて、すべて正常に機能しています。

マークアップ :

<td class="small-text">
<span class="wpcf7-form-control-wrap submitted-file">
    <input type="file" name="submitted-file-1" value="1" size="40" class="wpcf7-form-control wpcf7-file submitted-file" id="submitted-file-1">
</span>
</td>

(編集I:これは完全なマークアップではなく、関連する部分だけです。複製されたフィールド全体は、スクリプトから理解できるように、<tr>IDを持つ完全なテーブル行です..)#o99_the_work

JS:

jQuery("#add_row").click(function() {
    var row = jQuery("#o99_the_work tbody > tr:last"),
        newRow = row.clone(true);

    newRow.find("input[type=text],input[type=file]").each(function() {
        var me = jQuery(this).parent();
        var me2 = jQuery(this);
        var num = +(this.id.match(/\d+$/) || [0])[0] + 1;
        this.id = this.id.replace(/\d+$/, "") + num;
        this.name = this.id;
        me2.attr("class",me2.attr("class").replace(/\d+/, function(val) { return parseInt(val)+1; }));
    });

    newRow.insertAfter(row);

    return false;
});

したがって、このスクリプトでは、idとの両方nameが正しくインクリメントされます。

問題はどこにありますか?submitted-file入力フィールドと親スパンの両方でクラス属性もインクリメントする必要がありますが、この行は次のとおりです。

me2.attr("class",me2.attr("class").replace(/\d+/, function(val) { return parseInt(val)+1; }));

実際にはFIRST number をキャッチしますが、これは私の場合はwpcf7-form-controlであり、この値を wpcf8-form-control, wpcf9-form-control.. に増やしています (これは私にとっては間違っています)。

を持つ値のみをインクリメントするにはどうすればよいsubmitted-file[-something]ですか?

4

1 に答える 1

1

問題はreplace()メソッド内の正規表現にあります-番号の最後の出現を検索する必要があります。

me2.attr("class",me2.attr("class").replace(/\d+$/, function(val) { return parseInt(val)+1; }));
于 2013-09-07T07:17:13.467 に答える