이르판의 솔루션은 가능한 한 것처럼 보이지만, 그것은 크롬에 나를 위해 작동하지 않았다. 그러나 선택 상자에서 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의 솔루션과 결합하면 모든 브라우저에서이 기능을 사용할 수 있습니다.
값이 변경되지 않은 이유는 무엇입니까? 아마도 더 좋은 접근법이있을 것입니다. – Huangism
왜 누군가가 동일한 가치를 선택했는지 알 필요가없는 이유를 결코 이해하지 못했습니다. 흐림보기 – epascarello
기본적으로 민감한 데이터로 인해이 필드는 사용할 수 없습니다. 이 기능을 활성화하면 해당 내용을보고 액세스 로그를 작성할 수 있습니다. 값을 선택하면 비활성화되고 다시 숨겨지며 필요한 경우 변경 로그가 기록됩니다. 다른 옵션에 대한 change()와 일관되게 유지하려면 같은 옵션을 선택할 때도 이벤트가 실행되기를 원합니다. 말이 돼? –