私が取り組んでいるプロジェクトでは、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>