2010-03-12 9 views
8

select와 함께 작업하고 있습니다. 사용자가 값을 선택하면 트리거하고 이벤트를 원합니다.Jquery select events

"change"이벤트를 사용하고 있는데, 사용자가 선택을 열었지만 선택한 동일한 옵션을 선택하면 트리거가 실행되지 않습니다.

옵션이 선택한 것과 동일한 경우 사용자가 옵션을 개별적으로 선택하면 이벤트를 캡처하는 방법이 있습니까?

감사합니다.

+3

왜 당신은 선택이 변경되지 않는 경우 이벤트 불을 다시 하시겠습니까? –

답변

3

나는 이런 크로스 브라우저 솔루션하지만 뭔가인지 확실하지 않다 : 오페라/파이어 폭스에서 잘

$("#mySelect option").click(function() { 
    // do sth 
}); 

작품.

+0

나는 같은 페이지에서 많은 선택을했고, 나는이 옵션이 효율적이지 않을 것이라고 생각한다. 하지만 고마워. – Patxi1980

+3

당신은 많은'선택'을 가질 수 있습니다 - 왜 그것이 문제가 될 수 있는지 모르겠습니다. 올바른 선택기를 사용하십시오. – Crozin

+0

@ 크로 신과 일치합니다. 위의 예제는 해시 표시가 ID를 나타내므로 충돌을 일으키지 않습니다. 하나의 요소 만 해당 개별 ID를 가져야합니다. – Tass

0

필요한 옵션은 변경하는 대신 "클릭"하는 것입니다.

+0

이 옵션을 선택하면 곧바로 이벤트가 실행되므로 예상대로 작동하지 않습니다. 따라서 코드에서 사용자 선택을 사용하려는 경우 오도 된 수 있습니다. – ryanulit

4

bind 메소드를 사용하여 change 및 click 이벤트를 포착 할 수 있습니다. 이것은 내가이 필요한 것입니다 확실하지 않다 대부분의 키보드와 마우스 상호 작용

$('selector').bind('click change',function() {}) 
+0

변경 사항을 입력하면 옵션을 보려면 선택을 클릭하면 해고됩니다. – Patxi1980

+0

키 업과 마우스 아웃은 어떨까요? 곰이 말한 것처럼 왜 값이 변경되지 않은 경우 이벤트를 다시 실행해야합니까? –

+1

Patxi는 말할 수 없지만 애플리케이션에서는 맨 위 선택에서 옵션을 선택하면 해당 값이 페이지의 다른 선택 항목에 전파됩니다.그 반대의 경우는 사실이 아닙니다 (다른 곳의 옵션을 선택하면 선택 항목의 선택된 값이 변경되지 않습니다). 사용자가 상위 선택을 '1'로 변경 한 다음 다른 옵션 중 일부를 '2'로 변경하면 실제로 모두 '1'이되기를 원한다고 결정하고, 페이지 상단에서 "1"(이미 선택된 옵션)을 선택하십시오. – Weezle

-2
$('#selectID').change(function(){ 

    if($(this).val() == "week"){ 
    //trigger here 
    } 
}); 
<select id="selectID"> 
    <option>week</option> 
</select> 
0

을 잡을 수 있도록해야합니다. 다음은 해답이 아니라 트릭입니다.

제 경우에는 선택 상자의 값을 변경 한 후 값을 변경합니다.

$("selector").on('change', function() { 
    var selectedValue = $(this).val().trim(); 
    if (selectedValue == 'EXPECTED_VALUE') { 
    //do somethings 
    } 
    //change the value, so next time when you choose same option 
    //again the change event can be trigger 
    $(this).val('OTHER_VALUE'); 
} 

OTHER_VALUE은 (는) 추가 공간이있는 EXPECTED_VALUE 일 수 있습니다. 예 : EXPECTED_VALUE = 'foo', OTHER_VALUE = 'foo'. 그래서 당신은

var selectedValue = $(this).val().trim(); 
난 그냥 언급 할

에 의해 selectedValue을받을 때 같은 값을 얻을하지만 난 충분하지 않은 평판을 가지고 : D