2016-09-22 3 views
1

<select> 요소가 <options>의 목록을 표시하거나 숨길 때 어떤 이벤트가 발생하면 트리거됩니까?JavaScript 옵션을 선택하면 표시됩니까?

예 :이 선택 상자에 마우스로 클릭하면

<select> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
</select> 

브라우저 옵션의 목록을 보여줍니다.

그러나 선택 상자에 들어가면 브라우저에 옵션 목록이 표시되지 않습니다.

select 요소 내에서 mouseup 이벤트를 확인하는 유일한 방법입니까, 아니면 확실하지 않은 것이 있습니까?

$(document.body).on('mouseup', 'select', function(){    
    console.log('Either shown or hidden the options...but which?') 
}); 

미리 감사드립니다.

P. 나는 <select> 요소에 클래스를 추가하려 할 때 <options>을 보여 주므로 브라우저가 "옵션 팝업"을 표시 할 때 다른 맞춤 캐럿 스타일을 표시 할 수 있습니다.

+0

은''무엇을 제거하기위한 클래스와 onchange를 추가 클릭 오호에 대한 – mmativ

+0

jquery'의 change'에 사용할 수 있습니까? –

+0

키보드를 사용하면 select 요소로 이동 한 다음 alt-down 또는 alt-up 키를 눌러 목록을 끌어다 놓을 수 있기 때문에 마우스 이벤트 핸들러로는 충분하지 않습니다. (실제로 달성하려는 것에 대해서는 왜 그런가? 사용자는 select 요소와 같은 표준 컨트롤에서 표준 동작을 기대한다.) – nnnnnn

답변

0

즉, select 요소에 포커스가있는 것입니다. 따라서이 시나리오에서는 자바 스크립트가 필요하지 않습니다. 당신은 CSS를 사용하여 이것을 수용 할 수 있습니다. 이 같은

select:focus { 
    color:red; 
} 

하지만 jQuery를 사용하려는 않은 경우가 보일 것이다 무언가 : 순수 자바 스크립트 사용

$("select").focus(function(){ 
    console.log(" h1 "); 
}) 

, 당신의 선택 ID를 부여 = "선택"당신이 이런 일을 할 수있는 :

var x = document.getElementById("select"); 
x.addEventListener("focus", myFocusFunction, true); 
x.addEventListener("blur", myBlurFunction, true); 

function myFocusFunction() { 
    document.getElementById("select").style.backgroundColor = "yellow"; 
} 

function myBlurFunction() { 
    document.getElementById("select").style.backgroundColor = ""; 
} 
+0

목록에서 목록이 내려 지거나 다시 숨겨 질 때 이벤트가 있었는지 질문했다. 이는 select 요소가 포커스를받는 것과는 다릅니다. – nnnnnn

+0

@nnnnnn 네 말이 맞습니다. 질문에 대한 정답이 아닙니다. 옵션을 표시하는 select 요소와 연결된 javascript 이벤트가 없습니다. – partypete25

+0

@user300838 열 때 선택 요소에 클래스를 추가하는 데 원하는 효과를 실제로 얻으려면 http://gregfranko.com/jquery.selectBoxIt과 같은 jquery 플러그인을 사용해야 할 수도 있습니다. js/index.html, https://silviomoreto.github.io/bootstrap-select/ 또는 https://selectize.github.io/selectize.js/ – partypete25

관련 문제