2010-12-03 5 views
7

select 요소를 클릭하는 동안 선택한 요소의 이전 값을 기억해야합니다.
이 코드는 IE 대신 FF, CHROME 및 OPERA에서 작동합니다.
jquery click (이전 값 기억)

  1. 이전 값을 기억하십시오.
  2. 선택 옵션을 선택하고 이전 값 을 선택한 옵션으로 바꾸십시오!

코드 :

$(document).ready(function() { 
     $('#viewTableOrders tr td > select').click(function() { 
      oldCurrentPath = $(this).val(); 
      oldId = $(this).attr('title'); 
      oldCurrentDate = $('#viewTableOrders tr#vagon' + oldId + '> td >input.input_ver1').val(); 
      dataAjax = {}; 
     }); 


     /* event on change path */ 
     $('#viewTableOrders tr td > select').change(function() { 
      //do something... + old value 
     }); 
    }); 

답변

11

변화 사건.

은 클릭 대신에 초점을 사용해보십시오 :

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<select> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select>Old value is:<span></span> 
<script> 
$(document).ready(
    function() 
    { 
    $('select').focus(function() 
         { 
          //store old value 
         $(this).data('oldValue',$(this).val());} 
        ); 
    $('select').change(function() 
         { 
          //do something 
         $('span').text($(this).data('oldValue')); 
          //trigger focus to set new oldValue 
         $(this).trigger('focus'); 
         }); 

    } 
); 
</script> 

+0

+1 왜냐하면 난 그냥 내가 실제로 질문을 문제의 일부에 대한 답변을 모르겠지만, 그냥 데이터를 저장하기위한 다른 구현을 권장합니다! – prodigitalson

+0

훌륭한 아이디어. 초점과 함께 작업 중 !! – Dezigo

5

나는 이것에 대한 data 인프라를 사용합니다 :

문제가 2 클릭 (새 옵션을 선택)을하기 전에 화재 것입니다처럼 보이는
$('#viewTableOrders tr td > select').click(function() { 
    var old = {}; 
    old.currentPath = $(this).val(); 
    old.id = $(this).attr('title'); 
    old.currentDate = $('#viewTableOrders tr#vagon' + old.id + '> td >input.input_ver1').val(); 
    old.ajaxData = {}; 
    $(this).data('oldData', old); 

}).change(function() { 
    var oldData = $(this).data('oldData'); 
    if(typeof old == 'object'){ 
    // do stuff with oldData 
    }  
}); 
+0

감사합니다 !! 그것도 효과가 있어요! – Dezigo

0

질문은 조금 오래된,하지만 우리는 또한 최대 키 볼 필요가 있다고 생각 (예도 prodigitalson에 의해 제안 데이터를 사용)/down 이벤트가 발생하지 않으면 커서를 사용하여 선택 값을 변경해도 이전 값이 업데이트되지 않습니다. 이것은 @ Dr.Molle의 코드를 기반으로 저에게 효과적이었습니다.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
    <select> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    </select>Old value is:<span></span> 
    <script> 
    $(document).ready(
     function() 
     { 
     $('select').focus(function() 
      { 
      //store old value 
      $(this).data('oldValue',$(this).val()); 
      }); 
     $('select').change(function() 
      { 
       //do something 
       $('span').text($(this).data('oldValue')); 
       //trigger focus to set new oldValue 
       $(this).trigger('focus'); 
      }); 
     $('select').keydown(function() 
      { 
      //store old value 
      $(this).data('oldValue',$(this).val()); 
      }); 
     $('select').keydown(function() 
      { 
       //do something 
       $('span').text($(this).data('oldValue')); 
       //trigger focus to set new oldValue 
       $(this).trigger('focus'); 
      }); 

     } 
    ); 
    </script>