0

2つの選択要素(リストボックス)と2つのボタンを備えたHTMLフォームがあり、データを1つのリストボックスから別のリストボックスに移動します(JavaScriptを使用)。

 <form action="page.php" method="post">
        <select name="select1" multiple="yes">
            <option value="1">Left1</option>
            <option value="2">Left2</option>
            <option value="3">Left3</option>
        </select>
        <input type="button" value="--&gt;" onclick="moveOptions(this.form.select1, this.form.select2);" /><br />
        <input type="button" value="&lt;--" onclick="moveOptions(this.form.select2, this.form.select1);" />
        <select name="select2" multiple="yes">
            <option value="4">Right1</option>
            <option value="5">Right2</option>
        </select>
        <input type="submit" name="submit" value="Submit">
</form>

[送信]ボタンを押すと、リストボックスに保存されているすべての値を取得したいと思います。

foreach ($_POST['select1'] as $value)
    {
        //save data to database
    }

これは、選択された値を1つだけ取得します(存在する場合)。

[]の名前の後にaを付けることで、複数の値(選択されている場合)を取得できましたselect

<select name="select1[]" multiple="yes">

ただし、これでも選択されていない値は取得されないため、データ移動JavaScript関数も機能しません。

4

3 に答える 3

4

フォームを送信する前に、すべてのオプションを選択してください。

document.getElementsByName('submit')[0].onclick = function () {
    var s1 = document.getElementsByName('select1')[0];
    for(var i=0; i < s1.options.length; i++){
        s1.options[i].selected = true;
    }
};
于 2012-11-11T04:00:04.057 に答える
1
var select1 = document.getElementById('select1');
var values = new Array();

for(var i=0; i < select1.options.length; i++){
    values.push(select1.options[i].value);
}

配列をページからページに渡すには、ここにアクセスしてください

于 2012-11-11T03:47:40.157 に答える
1

なぜこれを実行するのかわかりませんが、フォームを送信する前にこのJqueryコードを呼び出し、非表示の入力に配列値を追加して投稿することができます

$("#Submit_button").click ( function() {
        var arr = new Array;
        $("#select1 option").each ( function() {
            arr.push ( $(this).val() );
        });
        $(#hidden_input).val(arr);
    });
于 2012-11-11T03:51:08.433 に答える