【发布时间】:2011-03-05 03:12:47
【问题描述】:
我对一些 JS 有点困难。
我有一个列表,我只想选择最多 10 个项目。我遇到的困难是,如果通过鼠标拖动进行多项选择,则不会触发 onClick 事件 - 所以我必须使用 onChange。
但是,使用 onChange - 我无法选择最后一个选项,因为我认为 DOM 在事件中不支持它。这是一个例子:
HTML:
<select id="mylist"><option>Test</option>
<option>Test</option>
<option>Test</option>
<option>Test</option>
</select>
JS:
Event.observe('mylist', 'change', checkList);
function checkList(e)
{
var count = 0;
var listObj = this;
// Count selected items
for (i=0; i < listObj.options.length; i++) {
if (listObj.options[i].selected) {
count++;
}
}
// If the count is over, tell me the last selected item
if (count > 10) {
var e = e || window.event;
var tgt = e.target || e.srcElement;
alert(tgt.nodeName + ' Index:' + tgt.index);
}
}
如果我使用onClick 事件,那么我会得到“OPTION - Index 1”。但是使用 onChange 我得到了 SELECT 节点。
有没有办法可以可靠地获得点击的选项?
【问题讨论】:
标签: javascript prototypejs dom-events