3

如果我打开下拉选择并选择相同的值而不单击离开以切换焦点,是否有办法触发事件?

我试过了

  1. onblur,但只有当我在选择之外进行额外的点击时它才有效。

  2. onchange,但只有当我选择不同的值时它才有效。

如果我打开下拉菜单并选择任何内容,无论它是相同还是不同,我都需要触发一个事件。

<select name='show1' id='show1' onblur='dosomething(this);'>
<option value='1'>One</option>
<option value='2'>Two</option>
</select>
4

3 回答 3

3

我认为您必须使用 onClick 事件并将先前选择的项目存储在变量中。

这是一个简单的例子,我认为可以使用一些重构:-)

    var dropboxOpen = false,
        oldItem     = null;
    function onClick(e) {
        if (dropboxOpen) {
            if (oldItem && oldItem === e.target.value) {
                console.log('same selected');
            }
            oldItem = e.target.value;   
        }        
        dropboxOpen = !dropboxOpen;
     }

http://jsfiddle.net/vtHPV/

于 2012-12-13T10:05:46.590 回答
2

您使用什么库或框架并不重要,但这很简单。您本质上是在寻找两件事是真实的:

  1. 测试控件是否被单击。

  2. 测试一个值(任何值)是否被选中,--或-- 仍然被选中。

数字 2 可以通过类似...

var elem = document.getElementById("ddlViewBy");
var value = elem.options[elem.selectedIndex].value;

然后测试它是否为非空是一件简单的事情。

于 2012-12-13T09:43:18.390 回答
0

如果你使用 jQuery

您可以尝试focus()事件。

于 2012-12-13T09:38:07.087 回答