0

私が取り組んでいるプロジェクトでは、Internet Explorer (10) で動作するワンクリック (選択解除) の複数入力リストが必要です。このコードを見つけて修正しました。これは非常にうまく機能しています。

しかし問題がある:

選択されたオプションの値は、Post-Method を介して PHP スクリプトに送信される必要がありますが、選択された値は 1 つしか送信されません。<select>ウェブを検索した後、配列のように NAME に名前を付ける必要があることがわかりました。だから私はに変更NAME="sel_current"しましたNAME="sel_current[]"。しかし、この変更により、このスクリプトは機能しなくなりました。

toの変更で修正document.forms[0].sel_currentされることを望んでいましたが、そうではありません。init()document.forms[0].sel_current[]

<HTML>
<HEAD>
    <TITLE>Multi-select test</TITLE>
<SCRIPT LANGUAGE="JavaScript">
var multiSelect_current = new Object();
function storemultiSelect_current_current(obj) {
    var name = obj.name;
    multiSelect_current[name] = new Array();
    for (var i=0; i<obj.options.length; i++) {
        multiSelect_current[name][i] = obj.options[i].selected;
        }
    }
function changemultiSelect_current(obj) {
    var name = obj.name;
    for (var i=0; i<obj.options.length; i++) {
        if (obj.options[i].selected) {
            multiSelect_current[name][i] = !multiSelect_current[name][i];
            }
        obj.options[i].selected = multiSelect_current[name][i];
        }
    }
function init() {
    storemultiSelect_current_current(document.forms[0].sel_current);
    }

</SCRIPT>

</HEAD>
<BODY  onLoad="init()">
<FORM>
<SELECT NAME="sel_current" MULTIPLE METHOD="post" SIZE=10 onChange="changemultiSelect_current(this)">
    <OPTION value="1">1111</OPTION>
    <OPTION value="2" selected>2222</OPTION>
    <OPTION value="3">3333</OPTION>
    <OPTION value="4">4444</OPTION>
    <OPTION value="5" selected>5555</OPTION>
    <OPTION value="6">6666</OPTION>
    <OPTION value="7">7777</OPTION>
</SELECT>
</FORM>

</BODY>
</HTML>
4

1 に答える 1

1

JSON.stringify(multiSelect_current[name])サーバーに送信するときに、最終的に使用できます。

function storemultiSelect_current_currentfor ループで、これを変更します。multiSelect_current[name][i][obj.options[i].innerText] = (obj.options[i].selected == true);

スクリーンショット:

ここに画像の説明を入力

于 2014-01-15T12:13:37.087 に答える