0

それで、要素を配列に動的に追加する方法を学びました-それらを削除するのはどうですか?

jQuery

$(document).on('change blur', '.roomFac', function () {
        var park = $("#park2").val();
        var lecturestyle = $("#lecture_style2").val();
        var roomstructure = $("#room_structure2").val();
        var groupsize = $("#groupSize2").val();
        var facilities = "";
        $('select[name*=roomFac]').each(function () {
            facilities += $(this).val();
            facilities += ",";
        });
        var dataString = 'park=' + park + '&' + 'lecturestyle=' + lecturestyle + '&' +
            'roomstructure=' + roomstructure + '&' + 'groupsize=' + groupsize + '&' +
            'facilities=' + facilities;
        $.ajax({
            type: "POST",
            url: "process_timetableMon2.php",
            data: dataString,
            cache: false,
            success: function (html) {
                $('#mon').html(html);
            }
        });
    });

process_timetableMon2.php

$array = explode(",", $_POST["facilities"]);

for($i = 0; $i < count($array)-2; $i++){
    echo $array[$i].'<br>';
}

ここにいくつかのコードをアップロードしました: http://jsfiddle.net/kfm5b/3/

4

1 に答える 1

0

より多くのドロップダウン メニューを動的に作成する代わりに、シンプルに保ち、multiple="multiple"属性を持つ 1 つのドロップダウン メニューに固執することをお勧めします。

<select class="roomFac" name="roomFac" id="roomFac" multiple="multiple">
  <option selected="selected" value="">Any</option>
  <option value="opt1">Opt 1</option>
  <option value="opt2">Opt 2</option>
</select>

JavaScript では、すべてのドロップダウン メニューとその選択された項目の値をループする必要がなくなりました。簡単にするために、構造のほとんどを保持しましたが、データ文字列を手動で作成するのではなく、値をオブジェクトに保存することをお勧めします。これはよりエレガントで、複数の文字列を使用する必要がある文字列のように、配列を渡すのが簡単ですarray[]=...

$(document).on('change blur', '.roomFac', function () {
    var park = $("#park2").val();
    var lecturestyle = $("#lecture_style2").val();
    var roomstructure = $("#room_structure2").val();
    var groupsize = $("#groupSize2").val();
    var facilities = $('#roomFac').val().join( ',' );
    var dataString = 'park=' + park + '&' + 'lecturestyle=' + lecturestyle + '&' +
        'roomstructure=' + roomstructure + '&' + 'groupsize=' + groupsize + '&' +
        'facilities=' + facilities;
    $.ajax({
        type: "POST",
        url: "process_timetableMon2.php",
        data: dataString,
        cache: false,
        success: function (html) {
            $('#mon').html(html);
        }
    });
});
于 2013-02-17T15:50:23.967 に答える