2014-01-15 109 views
0

對於我正在開發的項目,我需要一個單擊(de)選項的多輸入列表,它可以與Internet Explorer(10)一起使用。我發現和修改這個代碼,這是工作得非常好:Javascript multiple select

但有一個問題:

應通過郵政法的PHP腳本發送的選擇權的價值,但它發送只有一個選定的值。在搜索網頁後,我發現我需要像數組一樣命名我的<select>的NAME。所以我將NAME="sel_current"更改爲NAME="sel_current[]"。但是隨着這一改變,這個腳本停止了工作。

我希望document.forms[0].sel_currentinit()更改爲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> 

回答

1

當發送到您的服務器時,您最終可以使用JSON.stringify(multiSelect_current[name])

function storemultiSelect_current_current的for循環中,修改此:multiSelect_current[name][i][obj.options[i].innerText] = (obj.options[i].selected == true);

截圖:

enter image description here