0

フォームの非表示フィールドに配置する配列を作成する jquery/javascript 関数があります。ただし、これはネストされたフォームであるため、この関数を何度も呼び出して、すべての子の非表示フィールドに入力する必要があります: test_suite_run[test_runs_attributes][//id][packages_id]. これは、毎回異なる子 ID でこの関数を実行する必要があることを意味します。

//id多くの関数呼び出しの唯一の違いを示すために追加しました。ネストされた子インスタンスごとに、手動で何度もコピーして //id をインデックス 0...n に置き換えずに、この関数を複製する方法がわかりません。パラメータをjavascript関数に渡すことで、これを何らかの形で行うことができますか?

これが少し紛らわしい場合は申し訳ありませんが、必要に応じてより詳細に説明させていただきます。

JQuery 関数

$(document).ready(function () {

    arr = new Array();

    $(document).on('change', 'select[id ^="s_package//id"]', function () {
        var arr = $('select[id ^="s_package//id"]').map(function () {
            return this.value
        })

        result = ""

        for (j = 0; j < arr.length - 1; j++) {
            result += (arr[j] + ", ");
        }

        result += (arr[arr.length - 1])


        $("input[name='test_suite_run[test_runs_attributes][//id][packages_id]']").val(result);

    });
});
4

1 に答える 1

0

関数で使用する ID の配列を渡して、それらを繰り返すことができます。

function somethingMeaningful(ids) {
    for (var i = 0, l = ids.length; i < l; i++) {
        var id = ids[i];
        // do something with this id
    }
}

$(function() {
    somethingMeaningful(['id1', 'id2', 'idn']);
});

実際の形式に応じて、セレクターを単純化し、実行時に id を計算することもできます。

$(document).on('change', 'select[id^="s_package"]', function () {
    var id = $(this).attr('id').slice('s_package'.length);
    // Do stuff with real id
});
于 2012-07-16T19:29:43.287 に答える