2012-01-05 15 views
5

perdido mi día mientras buscaba cómo obtener los valores de las opciones seleccionadas en el widget UI de JQuery de Michael Aufreiter. Aquí está el enlace a su sitio de demostración y github: http://quasipartikel.at/multiselect/JQuery UI Multiselect cómo obtener los valores de las opciones seleccionadas

Como resultado, solo necesito campos de valor de las opciones seleccionadas sin enviar mensajes POST/GET al script PHP. Probé muchos métodos y sin resultados. necesitan su ayuda e ideas

* encontrado muchos temas sobre multiselect jQuery UI, pero inútil a causa de Aufreiter: s *

Respuesta

3

fui al sitio que tienes la lista anterior, y era capaz de correr esto en mi consola de cromo:

$('.ui-multiselect .selected li').each(function(idx,el){ console.log(el.title); }); 

parece que los valores que desea se almacenan en los atributos de título de los elementos de la lista dentro del elemento div.selected.

Editar:

Doh! Bueno, por supuesto que quieres los valores. Lo siento compañero. Completamente perdido eso. Los bienes reales se almacenan en los objetos jQuery data(). En este caso, la clave que desea es 'optionLink'. Mantiene una referencia a un elemento de opción. Cada elemento de la lista en el div '.selected' utilizó el método jQuery.data() para agregarle la opción subyacente.

Por lo tanto, debe obtener los elementos de la lista seleccionada, repetir, tomar la 'opción de enlace' del almacén de datos jQuery de datos, y luego obtener el valor.

El código siguiente funciona en la página de ejemplo:

$('.ui-multiselect .selected li').each(function(idx,el){ 
    console.log(el); 
    var link = $(el).data('optionLink'); 
    // link now points to a jQuery wrapped <option> tag 


    // I do a test on link first. not sure why, but one of them was undefined. 
    // however, I got all four values. So I'm not sure what the first <li> 
    // is. I'm thinking it's the header... 
    if(link){ 

     // here's your value. add it to an array, or whatever you need to do. 
     console.log(link.val()); 
    } 

}); 

Ésta es la primera que he visto de la selección múltiple. Es resbaladizo Pero simpatizo con tu frustración tratando de sacar algo. Un método 'getSelectedOptions()' sería agradable.

Cheers

+0

necesito valor del campo no su nombre (que realmente es el título) http://clip2net.com/s/ 1swzK Hay nombres pero no hay valores. Y no puedo buscar el valor del campo usando su texto porque los datos que coloqué en el widget multiselect están siendo eliminados de la red social y no es inteligente guardar 1k masivos, luego publicarlos, luego buscar valor por nombre, luego dar resultado para el usuario: s Todavía necesita su ayuda maestro y gracias por publicar :) – 966p

+0

bien. editó la publicación y agregó código para obtener los valores. ¡buena suerte! –

+0

¡Maravilloso!Déjame besarte jaja :) Muchas gracias, mi ejemplo está disponible en http://russia-golosuet.ru/otkr/test.php – 966p

13

Eso debería funcionar. Probado con la consola de Chrome

$("#countries").val(); 
+1

no olvides agregar multiple = "multiple" en tu etiqueta de selección – coderman

1

Intente acceder a los valores seleccionados en el evento de cierre.

p. Ej.

$("#dropdown").multiselect({ 
    header: false, 
    selectedList : 1, 
    height: "auto", 
}).multiselectfilter().bind("multiselectclose", function(event, ui) { 
    var value = $("#dropdown").val(); 
}); 

Espero que ayude.

1

mejor solución

$('#select').multiselect({ 
    selectAllValue: 'multiselect-all', 
    enableCaseInsensitiveFiltering: true, 
    enableFiltering: true, 
    height: "auto", 
    close: function() { 
      debugger; 
      var values = new Array(); 
      $(this).multiselect("getChecked").each(function(index, item) { 

       values.push($(item).val()); 
      }); 
      $("input[id*=SelectedValues]").val(values.join(",")); 
    } 
}); 
0

Puede probar esto:

$('#ListBoxId').multiselect({ 
    isOpen: true, 
    keepOpen: true, 
    filter: true 
}); 
Cuestiones relacionadas