2010-12-03 9 views
7

Mientras hago clic en seleccionar elemento, necesito recordar el valor anterior del elemento seleccionado.
Este código funciona en FF, CROMO y OPERA en lugar de IE.
jquery click (recordar valor antiguo)

  1. Recuerde el valor anterior.
  2. Elija la opción de seleccionar y reemplace el valor anterior ¡Recordatorio con una opción seleccionada!

Código:

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

Respuesta

11

Parece que el problema es que el segundo clic (elegir nueva opción) se disparará antes de la evento de cambio.

Intente utilizar el enfoque en lugar de clic:

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

(Ejemplo también utiliza datos sugerida por prodigitalson)

+0

+1 porque me acabo de dar cuenta de que en realidad no respondí la parte del problema de la pregunta, ¡simplemente recomendé una implementación diferente para almacenar los datos! – prodigitalson

+0

¡gran idea ... está trabajando con FOCUS !! – Dezigo

5

me gustaría utilizar la infraestructura data para esto:

$('#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

gracias !! ¡está funcionando también! – Dezigo

0

La pregunta es un poco viejo, pero creo que también tenemos que mirar a la tecla de arriba/abajo eventos; de lo contrario, usar el cursor para cambiar los valores de selección no hace que el valor anterior se actualice. Esto funcionó para mí, basado en el código de @ 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> 
Cuestiones relacionadas