2012-02-21 22 views
9

estoy poblando un campo de selección utilizando jQuery al cargar la página usando este métodojQuery refrescar cuadro de selección

$('#select').append('<option value="' + result + '">' + result + '</option>'); 

Sin embargo, esto deja el cuadro de selección 'en blanco', es decir, el primer valor de la lista de opciones no se preselecciona como la opción seleccionada.

¿Cómo 'actualizo' esta lista para que el primer valor esté preseleccionado?

Lo sentimos - debería haber dicho que era antes de jQuery Mobile

Gracias.

Respuesta

21

Puede agregar un atributo "seleccionado" al elemento de opción que desea que se seleccione:

$('#select') 
    .append('<option value="' + result + '" selected="selected">' + result + '</option>'); 

No se especifica cómo se rellena exactamente selecciona elemento, utilizando un bucle, se puede hacer así:

var data = ['a', 'b', 'c']; 
var $select = $('#select'); // you might wanna empty it first with .empty() 

for (var i = 0; i < data.length; i++) { 
    var o = $('<option/>', { value: data[i] }) 
     .text(data[i]) 
     .prop('selected', i == 0); 
    o.appendTo($select); 
}​ 

DEMO


Por lo que parece que está utilizando jQuery Mobile como dijiste en el comentario.

Si está utilizando el Seleccione Menú widget de, es necesario actualizar mediante programación después de realizar el cambio programático a su contenido/estructura:

$select.selectmenu("refresh", true); 

Documentation

+0

Quizás esto sea un problema con los campos de selección de formularios móviles JQuery ya que ninguno de estos ejemplos está pre seleccionando un valor, sí en eso (por ejemplo en un iPhone, cuando ve la selección hay un tic azul al lado del valor seleccionado) pero en la carga, el cuadro de selección es blanco. Muy raro. – user1202278

+1

Deberías especificar que estás usando jquery mobile, ¡esta es información bastante importante! ¿Estás usando el widget selectmenu? –

+0

He editado mi respuesta en consecuencia. –

3

Simplemente .. se establece el valor lo que quiera, es decir: $('#select').val(5); .. por lo que en su caso su edición $('#select').val(result);

: un ejemplo de trabajo completo incluido:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.4.js'></script> 
<select id='select'></select> 
<br> 
<input type=button onclick='addNew()' value='Add'> 

<script> 
function addNew() 
{ 
     var result = Math.floor(Math.random()*1000); 
     $('#select').append('<option value="' + result + '">' + result + '</option>'); 
     $('#select').val(result);   
} 
</script> 

+0

Me temo que eso no es la solución, que se sigue opción vacía preseleccionada :( – user1202278

+0

He actualizado la respuesta con un ejemplo de trabajo – Ashraf

+0

Quizás este es un problema con los campos de selección de formularios móviles de JQuery ya que ninguno de estos ejemplos está pre seleccionando un valor, sí en t (por ejemplo, en un iPhone, cuando ve la selección, hay una marca azul al lado del valor seleccionado) pero en la carga, el cuadro de selección es blanco. Muy raro. – user1202278

1

todos los navegadores no actualiza automáticamente seleccionará después de agregar una nueva opción.

Un truco que funciona para mí es ocultar y mostrar el cuadro de selección justo después de agregarle nuevas opciones. Así, en su caso:

$('#select').append('<option value="' + result + '">' + result + '</option>').hide().show(); 

En cuanto a la selección de la opción recién añadida correcta, siga con:

$('select').val(result); 
3

Es posible utilizar

$('#select').removeAttr('selected').find('option:first').attr('selected', 'selected'); 
+0

Quizás esto sea un problema con los campos de selección de formularios móviles JQuery ya que ninguno de estos ejemplos está pre seleccionando un valor, sí en eso (por ejemplo en un iPhone, cuando ve la selección hay un tic azul al lado al valor seleccionado) pero en la carga, el cuadro de selección es blanco. Muy raro. – user1202278

Cuestiones relacionadas