jquery点击(记住OLD VALUE)

时间:2010-12-03 06:40:43

标签: javascript jquery

当我点击select元素时,我需要记住所选元素的旧值。
此代码适用于FF,CHROME和OPERA,而不是IE。

  1. 记住旧的价值。
  2. 选择选择选项并替换旧值      记住选定的选项!
  3. 代码:

       $(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
            });  
        });
    

3 个答案:

答案 0 :(得分: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>

(例子也使用prodigitals建议的数据)

答案 1 :(得分: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
  }      
});

答案 2 :(得分:0)

问题有点旧,但我认为我们还需要查看关键的上/下事件,否则使用光标更改选择值不会导致旧值更新。这对我有用,基于@ 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>