web-dev-qa-db-ja.com

複数選択からの値を投稿する

フォームの複数選択から値を投稿するにはどうすればよいですか? [送信]をクリックすると、選択した値が投稿されません。

<form id="form" action="" method="post">
    <div>
        <select id="inscompSelected" multiple="multiple" class="lstSelected">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>                
        </select>
        <input type="submit" value="submit">
    </div>
</form>
61
user1430949

name属性を追加する必要があります。

これは複数選択であるため、HTTPレベルでは、クライアントは同じ名前の複数の名前/値のペアを送信するだけです。method="GET": someurl?something=1&something=2&something=3

PHP、Ruby、および他のいくつかのライブラリ/フレームワークの場合、角括弧([])名前の最後。フレームワークはその文字列を解析し、配列のような使いやすい形式で提示します。

要求を手動で解析する以外に、複数の値にアクセスする言語/フレームワーク/ライブラリに依存しない方法はありません。それらはすべて異なるAPIを持っているためです

PHPでは、次を使用できます。

<select name="something[]" id="inscompSelected" multiple="multiple" class="lstSelected">
114
iambriansreed

これを試してください:ここでselectはselect要素です

let select = document.getElementsByClassName('lstSelected')[0],
    options = select.options,
    len = options.length,
    data='',
    i=0;
while (i<len){
    if (options[i].selected)
        data+= "&" + select.name + '=' + options[i].value;
    i++;
}
return data;

データはクエリ文字列の形式です。つまり、name = value&name = anotherValue

0
Chin2