2009-02-13 38 views
4

因此,如果您有一個HTML列表框,也稱爲多選,並且您希望生成一個逗號分隔的字符串,其中列出了所有值在那個列表框中,你可以用下面的例子來做到這一點。 list_to_string()js函數是這裏唯一重要的東西。您可以在http://josh.gourneau.com/sandbox/js/list_to_string.html使用Javascript從HTML列表框(多選)中的項目生成逗號分隔的字符串

<html> 
<head> 
    <script> 
    function list_to_string() 
    { 
     var list = document.getElementById('list'); 
     var chkBox = document.getElementById('chk'); 
     var str = document.getElementById('str'); 
     textstring = ""; 
     for(var i = 0; i < list.options.length; ++i){ 
      comma = ","; 
      if (i == (list.options.length)-1){ 
       comma = ""; 
      } 
      textstring = textstring + list[i].value + comma; 
      str.value = textstring; 
     } 

    } 
    </script> 
</head> 
<body> 
    <form> 
     <select name="list" id="list" size="3" multiple="multiple"> 
      <option value="India">India</option> 
      <option value="US">US</option> 
      <option value="Germany">Germany</option> 
     </select> 
     <input type="text" id="str" name="str" /> 
     <br /><br /> 
     <input type="button" id="chk" value="make a string!" name="chk" onclick="list_to_string();"/> 
    </form> 
</body> 
</html> 
+0

我不知道政策是在發佈自己的問題的答案。我只是想分享這個小提示。 – Gourneau 2009-02-13 06:36:58

+0

以及這裏的實際問題是什麼? – kender 2009-02-13 06:39:41

回答

4

字符串連接是在IE瀏覽器很慢,使用數組來代替:

function listBoxToString(listBox,all) { 
    if (typeof listBox === "string") { 
     listBox = document.getElementById(listBox); 
    } 
    if (!(listBox || listBox.options)) { 
     throw Error("No options"); 
    } 
    var options=[],opt; 
    for (var i=0, l=listBox.options.length; i < l; ++i) { 
     opt = listBox.options[i]; 
     if (all || opt.selected) { 
      options.push(opt.value); 
     } 
    } 
    return options.join(","); 
} 
1

這個頁面玩你可以使用array.join( '');從數組中創建逗號分隔列表。

這樣的事情,只有更好:

var list_to_string = function() { 
    var opts = document.getElementById('list').options; 
    var i = 0, len = opts.length, a = []; 
    for (i; i<len; i++) { 
     a.push(opts[i].value); 
    } 
    document.getElementById('str').value = a.join(','); 
} 
1

這也可以簡單地通過使用Request.Form(control.UniqueID)拉做多列表框已經存在的逗號分隔值。

相關問題