2014-01-15 72 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