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-eventを使用して、以前に選択したアイテムを変数に格納する必要があると思います。

これは、リファクタリングを使用できると思う簡単な例です:-)

    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

使用するライブラリやフレームワークは関係ありませんが、これは非常に簡単です。あなたは本質的に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 に答える