2014-02-06 3 views
2

현재 선택한 옵션 인 경우에도 옵션이 선택 될 때마다 실행되는 쉬운 이벤트를 찾습니다. 선택한 옵션을 다시 선택할 때 jQuery의 .change()는 실행되지 않는 것처럼 보이지만 다른 옵션은 결국 "변경"이벤트이므로 의미가 있습니다.옵션을 선택하면 선택 요소에 대한 jQuery 이벤트 (NOT .change)

변경 방법과 거의 비슷하지만 선택한 요소를 다시 선택하면 실행되는 다른 항목이 있습니까? 또는 클릭 이벤트 또는 무언가에 실수가 필요합니까?

+0

값이 변경되지 않은 이유는 무엇입니까? 아마도 더 좋은 접근법이있을 것입니다. – Huangism

+0

왜 누군가가 동일한 가치를 선택했는지 알 필요가없는 이유를 결코 이해하지 못했습니다. 흐림보기 – epascarello

+0

기본적으로 민감한 데이터로 인해이 필드는 사용할 수 없습니다. 이 기능을 활성화하면 해당 내용을보고 액세스 로그를 작성할 수 있습니다. 값을 선택하면 비활성화되고 다시 숨겨지며 필요한 경우 변경 로그가 기록됩니다. 다른 옵션에 대한 change()와 일관되게 유지하려면 같은 옵션을 선택할 때도 이벤트가 실행되기를 원합니다. 말이 돼? –

답변

1
<select id="select"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 

JS

$(function(){ 
     $('#select option').click(function(){ 
     alert($(this).val()); 
     }); 
    }) 
+1

옵션 태그에 클릭 이벤트가 없습니다. http://stackoverflow.com/a/3487274/613004 – Faust

+0

@Faust : 정말입니까? 왜이게 작동하지? http://jsfiddle.net/96daB/ –

+1

나를 위해 - 당신은 어떤 브라우저를 사용하고 있습니까? 최신 Chrome을 사용하고 있습니다. – Faust

0

이르판의 솔루션은 가능한 한 것처럼 보이지만, 그것은 크롬에 나를 위해 작동하지 않았다. 그러나 선택 상자에서 click 이벤트가 발생하면 자리 표시 자 유형 옵션을 설정하는 문제를 해결하기 위해 일종의 해결 방법을 사용했습니다. 선택기는 사용자가 선택한 것을 보여 주지만, 활성 값이 변경 된 이후 변경 이벤트는 항상, 발사 전에

<select id="dropdown"> 
    <option value="choose" disabled selected>Choose</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 
<script> 
// When the dropdown is opened, the "choose" option is selected 
    $('#dropdown').on('click', function(){ 
     $("#dropdown option").filter(function() { 
      return $(this).val() == "choose"; 
     }).prop('selected', true); 

     // On change will always fire 
     $('#dropdown').on('change', doStuff); 
    }); 

    function doStuff(){ 
     // Grab the selected value before click changes it 
     let currentValue = $('#dropdown').val(); 

     alert(currentValue); 

     /* Do other stuff with currentValue 

      Wait until second click that selects sets value to "choose" 
      when the user makes their selection, then set the selector 
      back to what the user chose 
     */ 
     setTimeout(function(){ 
      $("#dropdown option").filter(function() { 
       return $(this).val() == order; 
      }).prop('selected', true); 
     }, 100); 
    } 
</script> 

결과는 약간의 지연이다. 이것은 IE 나 FireFox에서 잘 작동하지 않지만 사용중인 브라우저를 감지하여이를 Ifran의 솔루션과 결합하면 모든 브라우저에서이 기능을 사용할 수 있습니다.

관련 문제