2010-05-24 10 views
26

¿Cómo se puede abrir una lista desplegable con un desencadenador?Haga clic en desencadenar en el cuadro de selección no funciona en jQuery

Este es el código que no funciona:

$('select').trigger('click'); 

Sólo por nota - mousedown y mouseup también no funciona.

+1

que esta es la solución que necesita: http://stackoverflow.com/questions/499405/change-selected-value-of-drop-down-list-with-jquery –

+0

tengo Esto funcionó: http://stackoverflow.com/a/10136523/2541 –

+0

posible duplicado de [¿Cómo se puede programar mediante programación un HTML SELECT para desplegarlo (por ejemplo, debido al mouseover)?] (http: // stackoverflow .com/questions/249192/how-can-you-programmatically-tell-a-html-select-to-drop-down-for-example-due) –

Respuesta

9

Lo que intentas lograr es imposible. Incluso si activa un click, la lista desplegable no se abrirá como si el usuario hubiera hecho clic en ella. Si desea cambiar el valor seleccionado actualmente con uno nuevo, puede usar la función val. Supongo que la única solución es simular toda la interfaz de usuario de un elemento select utilizando divs.

+1

Gracias por su respuesta. No quiero cambiar el valor, solo quiero abrir la lista ... Parece que no hay una solución adecuada para esto ... – sasa

11
 $('select').children('option').each(function() { 
      if ($(this).is(':selected')) 
      { $(this).trigger('change'); } 
     }); 
+1

Esto podría desencadenar otros eventos adjuntos que probablemente no desee. –

-1

Se puede hacer de la siguiente manera:

HTML:

<form> 
    <select> 
    <option value="opt1">Option 1</option> 
    <option value="opt2">Option 2</option> 
    <option value="opt3">Option 3</option> 
    </select> 
    <input type="submit" value="OK"></input> 
</form> 

Javascript (jQuery):

$("option[value='opt2']").attr("selected", "selected"); // Selects option 2 
    $("input[type='submit']").trigger("click"); // Submits the form 
+1

Esto no abre la selección, en su lugar, envía el formulario. –

4

No hay manera correcta de hacer clic en un menú desplegable mediante programación .

Usted puede seleccionar una opción a través de:

$('#sourceOptions>option:eq(0)').prop('selected', 'selected'); 

Si desea simular un clic del usuario: tienes que hacerlo como dice @Renso que:

$('#sourceOptions>option:eq(0)').prop('selected', 'selected').trigger('change'); 
7

Me tomó un tiempo pero se encontró una solución:

(Chrome & Safari SOLAMENTE)

function open(elem) { 
    if (document.createEvent) { 
     var e = document.createEvent("MouseEvents"); 
     e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
     elem[0].dispatchEvent(e); 
    } else if (element.fireEvent) { 
     elem[0].fireEvent("onmousedown"); 
    } 
} 

http://jsfiddle.net/oscarj24/GR9jU/

+5

Cerrar. Esto funciona en Chrome y Safari, pero no funciona en Firefox o IE. –

+1

este código no puede funcionar en firefox – smallg

Cuestiones relacionadas