Quiero obtener el valor previamente seleccionado de un control desplegable usando jquery o javascript. Cómo puedo conseguir esto? Intenté con el selector prev () de jquery pero fallé

$(ddlStatus).find("option").prev(":selected").attr("text");

Si ddlStatus tiene elementos como A, B, C, D, E Cuando se carga la página B se selecciona pero cuando el usuario cambia el elemento {digamos) E, entonces quiero seleccionar previamente, es decir, B.

2
Ulhas Tuscano 6 jul. 2011 a las 12:53

3 respuestas

La mejor respuesta

Puede hacerlo así (no optimizado pero funciona):

$(document).ready(function(){
   $(ddl).data('lastSelected', $(ddl).val());
});
$(ddlstatus).change(function(){
   var lastSelected = $(this).data('lastSelected');
   $(this).data('prevLastSelected', lastSelected);
   $(this).data('lastSelected', $(this).val());
});

Luego, para conocer lo seleccionado previamente en cualquier momento, simplemente haga lo siguiente:

var previouslySelectedValue = $(ddl).data('prevLastSelected');

Lo bueno de este código es que el estado se guarda en el elemento y usted no usa variables globales , por lo que puede aplicarse a cualquier número de cuadros de selección

Espero que esto ayude. Salud

2
Edgar Villegas Alvarado 6 jul. 2011 a las 09:08

Siempre que se haga una selección, guarde el valor. En una nueva selección, tendrá el valor anterior guardado hasta que lo sobrescriba.

No puede hacer esto directamente, como lo hace después de la información histórica: anterior se trata del pedido, no del momento.

3
Schroedingers Cat 6 jul. 2011 a las 09:01

Aquí hay un ejemplo:

HTML:

<select id="myselect">
  <option value="one" selected="selected">one</option>
  <option value="two">two</option>
  <option value="three">three</option>
</select>

JQUERY:

var prev = null; //global
var cur = $('#myselect').val();//global
var flag = true;// global

$('#myselect').change(function() {
    if (flag) {
        prev = cur;
        cur = $(this).val();
        flag = false;
    } else {
        prev = cur;
        cur = $(this).val();
    }
});
1
thecodeparadox 6 jul. 2011 a las 09:05