2010-12-03 61 views
7

虽然我点击选择元素,我需要记住所选元素的旧值。
此代码适用于FF,CHROME和OPERA而不是IE。
jquery点击(记住旧值)

  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

它看起来像问题是,第2点击(选择新的选项),将前火改变事件。

尝试使用聚焦,而不是点击:

<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> 

(示例还使用prodigitalson建议数据)

+0

+1因为我刚刚意识到我没有真正回答问题的部分问题,只是推荐一个不同的实现来存储数据! – prodigitalson 2010-12-03 07:11:41

5

我会用这个data基础设施:

$('#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 2010-12-03 07:28:44

0

的问题是有点老了,但我认为我们还需要看看键向上/ 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>