选择onchange相同的值

时间:2012-12-13 09:30:27

标签: javascript html onchange onblur

如果我打开下拉列表选项,是否有办法触发事件,并选择相同的值没有点击以切换焦点?

我试过

  1. onblur,但仅当我在选择之外额外点击时才有效。

  2. onchange,但只有在我选择其他值时才有效。

  3. 我需要触发一个事件,只要我打开下拉列表并选择任何内容,无论它是相同还是不同。

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

3 个答案:

答案 0 :(得分:1)

使用哪个库或框架并不重要,但这很简单。你基本上是在寻找两件事:

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

  2. 测试是否已选择值(任何值),仍然选择 - 或 - 。

  3. 数字2可以用类似的东西来实现

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

    测试它是非空的是一件简单的事情。

答案 1 :(得分:1)

我认为您必须使用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/

答案 2 :(得分:0)

如果你使用jQuery

您可以尝试 focus() 事件。