2011-12-21 53 views
1

的显示选择我有这样的例子:JS:一个<select>多

<form action="form_action.asp"> 
    <select multiple="multiple" name="example" size="10"> 
    <option value="foo">Foo</option> 
    <option value="bar">Bar</option> 
    <option value="anything">Anything</option> 
    <option value="else">Else</option> 
    </select> 
    <input type="submit" /> 
</form> 

我想显示多少行选择(按CTRL + CLIC)。我想我可以用一点JS来做,但我不知道如何编写它。

有什么想法?

+0

如果它是一个表单提交,不能你只是做它在服务器端? – EKet 2011-12-21 17:22:07

+0

(这不是我正在寻找的:目的只是实时显示

回答

2

首先给你选择一个ID

<select id="yourSelect" multiple="multiple" name="example" size="10"> 

然后

var numSelected = 0; 
var allOptions = document.getElementById("yourSelect"); 
for (var i = 0; i < allOptions.length; i++) 
    if (allOptions[i].selected) 
     numSelected++ 

为了完整起见,我会提到,如果你想使用jQuery,和我不是说你应该为这个简单的东西,但如果你曾经这样做,你可以这样做

var numSelected = $("option:selected", "#yourSelect").length; 
+0

为什么downvote?我测试了这段代码的两个部分。 – 2011-12-21 17:28:46

+0

为什么每个人都为每种javascript情况提供JQuery? – miqbal 2011-12-21 17:36:40

+3

@moses - 很多人使用jQuery。它使生活更愉快。我用纯JavaScript回答了OP的问题,然后如果他有兴趣,我给了他一个jQuery替代品。 – 2011-12-21 17:37:44

0

我GOOGLE搜索到并找到this article

var selected = new Array(); 
for (var i = 0; i < ob.options.length; i++) { 
    if (ob.options[ i ].selected) { 
     selected.push(ob.options[ i ].value); 
    } 
} 

这将创建一个Arrayselected)与选项。您可以轻松修改它以获取所选项目的数量。

0

做出了example: 但核心是:

function parseSelected() { 
    var count = 0; 

    for (var i = 0; i < length; i++) { 
     if (select[ i ].selected) { 
      count++ 
     } 
    } 
    output.innerHTML = count; 
}