jquery
  • select
  • 2012-08-10 22 views 10 likes 
    10

    Puedo encontrar mi elemento seleccionado por nombre, pero tengo problemas para encontrar el valor seleccionado asociado con él.¿Cómo obtengo el elemento seleccionado por nombre y luego obtengo el valor seleccionado de un menú desplegable usando jQuery?

    Aquí está mi código de abajo:

    <select name="a[b]" onchange='mySelectHandler("a[b]")'> 
        <option value='Choice 1'>Choice 1</option> 
        <option value='Choice 2'>Choice 2</option> 
    
    </select> 
    

    entonces, en mi manejador estoy usando:

    function mySelectHandler(name){ 
        var mySelect = $('select[name=' + name) 
        // try to get selected value 
        // alert ("selected " + mySelect.val()) 
        console.log("object "+ mySelect.toSource()); 
        } 
    

    El resultado de mi impresión al registro es:

    objeto ({ length: 0, prevObject: {0: ({}), context: ({}), length: 1}, context: ({}), selector: "select [name = a [b]"})

    A ¿Alguna idea sobre cómo hacer esto?

    Respuesta

    21

    Su selector es un poco apagado, que le falta el arrastre ]

    var mySelect = $('select[name=' + name + ']') 
    

    También puede ser necesario poner comillas alrededor del nombre, así:

    var mySelect = $('select[name="' + name + '"]') 
    
    0

    en lugar de

    mySelect.toSource() 
    

    uso

    mySelect.val() 
    
    9

    Prueba esto:

    $('select[name="' + name + '"] option:selected').val(); 
    

    Esto hará que el valor seleccionado de su menú.

    +0

    ¿cómo se puede obtener todos los nombres ?? –

    1

    eliminar el evento onchange desde el formato HTML y enlazarlo en su documento evento ready

    <select name="a[b]" > 
        <option value='Choice 1'>Choice 1</option> 
        <option value='Choice 2'>Choice 2</option> 
    </select>​ 
    

    y Guión

    $(function(){  
        $("select[name='a[b]']").change(function(){ 
         alert($(this).val());   
        }); 
    }); 
    

    muestra de trabajo: http://jsfiddle.net/gLaR8/3/

    0

    respuesta de MrOBrian muestra por qué su actual el código no funciona, con la pérdida de ] y comillas, pero aquí hay una w más fácil ay para que funcione:

    onchange='mySelectHandler(this)' 
    

    Y luego:

    function mySelectHandler(el){ 
        var mySelect = $(el) 
        // get selected value 
        alert ("selected " + mySelect.val()) 
        } 
    

    O mejor aún, eliminar el controlador de eventos en línea por completo y se unen al controlador de eventos con jQuery:

    $('select[name="a[b]"]').change(function() { 
        var mySelect = $(this); 
        alert("selected " mySelect.val()); 
    }); 
    

    Esa última necesitaría estar en un controlador document.ready o en un bloque de script que aparece después del elemento seleccionado. Si desea ejecutar la misma función para otras selecciones, simplemente cambie el selector a algo que se aplique a todas, por ejemplo, todas las selecciones serían $('select'), o todas con una clase particular serían $('select.someClass').

    0

    Pruebe lo siguiente para obtener el valor del elemento select por Nombre Elemento

    $("select[name=elementnamehere]").val(); 
    
    0

    o simplemente puede hacer

    $('select[name=a[b]] option:selected').val() 
    
    0

    Para añadir a las respuestas aquí, asegúrese de que no hay espacio entre el select y [name...

    Incorrecto:

    'select [name=' + name + ']' 
        ^
    

    Derecha:

    'select[name=' + name + ']' 
    
    Cuestiones relacionadas