2014-05-16
보통 selectbox를 사용하다 보면 해당 값이 바뀌기 전의 값으로 되돌리는 기능이 필요할 때가 있다.

이럴때는, 해당 오브젝트에 focus()이벤트가 발생했을때 값을 미리 저장해 놓으면 가능하다.
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
aa = '';
$(function(){
 setTimeout("window.self.focus();", 1000 );

 $('#dd').focus( function(){
  aa = $(this).val();
 }).change(function(){
  $('#dd').trigger( "blur");
  $('#test').append( "before value : "+ aa +"<br>");
 });
});

</script>

<select id='dd'>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
</select>

<div id='test'></div>
하지만, 보통 한번 focus를 가진 상태에서 여러번 값을 바꿀수도 있다.
이럴땐, trigger()를 이용해서 강제로 해당 오브젝트에서 blur를 실행시켜 주어야, 다시 focus()이벤트가 일어나게 하는 편법을 사용하면 된다.