jQuery .trigger(“cambio”) no funciona

4 minutos de lectura

Avatar de usuario de Robin
Robin

no puedo conseguir .trigger("change") trabajar. ¿Alguien sabe por qué?

jQuery(document).ready(function () {

    jQuery("select[id='DROPDOWNID']").change(function () {

        var selectedIndex = jQuery("select[id='DROPDOWNID']").prop('selectedIndex');

        switch (selectedIndex) {
            case 0:
                hideVarforProspekt();
                break;
            case 1:
                hideOrdervarde();
                break;
            case 2:

                break;
            case 3:
                hideSektor();
                break;
        }
    });

    ** jQuery("select[id='DROPDOWNID']").trigger("change"); **


    function hideVarforProspekt() {
        jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide();
    }

    function hideSektor() {
        jQuery("table[id='IDFROMSHAREPOINT']").closest('tr').hide();
    }

    function hideUppskOrder() {
        jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide();
    }
});

  • Y soy el peor cuando se trata de pegar código, ¡lo siento!

    – Robin

    9 de septiembre de 2013 a las 7:34

  • ¿Puedes mostrar tu select[id='DROPDOWNID'] ¿código HTML?

    – rajA

    9 de septiembre de 2013 a las 7:36

  • ¿Por qué está utilizando el selector de atributos en lugar del selector de ID? Debería ser $('#DROPDOWNID')

    – Arun P Johny

    9 de septiembre de 2013 a las 7:36


  • porque no funciona

    – Arun P Johny

    9 de septiembre de 2013 a las 7:37

  • @ArunPJohny: Debido a que en Sharepoint Online, algunos comandos se ejecutan con $, así que intento evitar usarlo.

    – Robin

    9 de septiembre de 2013 a las 7:39

Avatar de usuario de Nilesh
Nilesh

El controlador de eventos de cambio debe definirse antes de llamar al .trigger('change') o .change()

A continuación se muestran 2 escenarios.

Escenario 1: donde se llama al evento de cambio antes de que se defina.

    $(document).ready(function() 
    {
       $('#selector').change();   or  $('#selector').trigger('change');
       $('#selector').on('change', function(){

        });
    });

Escenario 2: donde se define el controlador de eventos de cambio antes de llamarlo

$(document).ready(function() 
{
    $('#selector').on('change', function(){

    });
    $('#selector').change();   or  $('#selector').trigger('change');
});

Para mí, el problema se solucionó cuando uso el escenario 2. ¡¡Espero que esto ayude!!

  • Gran hallazgo hombre!! ¡Salud!

    – Alias ​​Varghese

    24 de marzo de 2017 a las 9:53

  • Gran hallazgo hombre!! ¡Salud! Súper hombre. Muchas gracias me ayudan mucho.

    – Denis Bhojvani

    10 de octubre de 2018 a las 5:06

Avatar de usuario de Krasimir
Krasimir

A veces, el uso del disparador no es necesario:

// use just jQuery("#DROPDOWNID") instead
var select = jQuery("select[id='DROPDOWNID']");

// placing the handler in separate function
var changeHandler = function () {
    var selectedIndex = select.prop('selectedIndex');
    switch(selectedIndex) {
        case 0:
            hideVarforProspekt();
        break;
        case 1:
            hideOrdervarde();
        break;
        case 2:

        break;
        case 3:
            hideSektor();
        break;
    }
}

// cache your jQuery selectors. It's a good practice
// and improves the readability
select.change(changeHandler);

// triggering
changeHandler();

  • Esto funcionó cuando se cargó el sitio, pero no cuando cambio en el menú desplegable. ¿Sabes por qué?

    – Robin

    9 de septiembre de 2013 a las 8:18

  • Sí, simplemente mueva el controlador sobre el evento que se adjunta jsfiddle.net/ccyG8 (También edité mi respuesta).

    – Krasimir

    9 de septiembre de 2013 a las 8:28

Avatar de usuario de Arun
Arun

Aquí hay una versión de trabajo que usa la sintaxis de id:

$(document).ready(function () {
  $('select[id=car]').change(function () {
      alert("change: " + $(this).val());
  });

  $("#car").trigger('change');
});

JSFiddle

$('#selector').change();   

o

$('#selector').trigger('change'); 

// El segundo me funciona. Pero deberías llamarlo después de la definición de evento de cambio.

Avatar de usuario de Shakti Patel
Shakti Patel

usó esto:

jQuery("#DROPDOWNID").trigger("change");

¿Puedes comprobar el enlace dado? Manifestación

código HTML

<select id="car">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

código jquery

$(document).ready(function(){
  $("#car").change(function(){
    alert("change");
  });

    $("#car").trigger('change');
});

Resultado :

Es alerta de fuego

Eliminar identificación = de todos los selectores y reemplácelo con #identificación seleccionada

  • No funciona cuando elimino id=. jQuery(“seleccionar[id=’S_x00e4_ljsteg_f9f2bae9-f429-46c6-aa2d-6b126b50056f_$DropDownChoice’]”).trigger(“cambio”); Esto funcionó antes, así que no sé por qué tengo que cambiarlo.

    – Robin

    9 de septiembre de 2013 a las 8:01

  • usó este jQuery(“#DROPDOWNID”).trigger(“cambio”);

    – Shakti Patel

    9 de septiembre de 2013 a las 8:21

  • Ah, entonces estás usando id='«id»' sintaxis porque sus ID tienen caracteres que requieren escape para representar en un formulario de selector de ID de CSS.

    – binki

    16 de junio de 2014 a las 20:18

Avatar de usuario de tsveti_iko
tsveti_iko

El .change() El evento espera hasta que el campo de entrada pierde el foco, por lo que no se activará antes de que haga clic o salga del campo.

Así que solo puedes agregar .blur() evento después de la .change() evento como este:

     var $element = jQuery("select[id='DROPDOWNID']");
     $element.change(function () { ... });
     $element.blur();

O puede usar otro evento en lugar de .change()p.ej .keyup(), .paste()etc.

  • No funciona cuando elimino id=. jQuery(“seleccionar[id=’S_x00e4_ljsteg_f9f2bae9-f429-46c6-aa2d-6b126b50056f_$DropDownChoice’]”).trigger(“cambio”); Esto funcionó antes, así que no sé por qué tengo que cambiarlo.

    – Robin

    9 de septiembre de 2013 a las 8:01

  • usó este jQuery(“#DROPDOWNID”).trigger(“cambio”);

    – Shakti Patel

    9 de septiembre de 2013 a las 8:21

  • Ah, entonces estás usando id='«id»' sintaxis porque sus ID tienen caracteres que requieren escape para representar en un formulario de selector de ID de CSS.

    – binki

    16 de junio de 2014 a las 20:18

avatar de usuario de dmitry.matora
dmitry.matora

Me sorprende que nadie mencione esto, pero cuando jQuery("select[id='DROPDOWNID']").trigger("change") no hace el trabajo (como cuando intenta emular el cambio en el código angular usando Tampermonkey)
jQuery("select[id='DROPDOWNID']")[0].dispatchEvent(new Event('change')) hace

¿Ha sido útil esta solución?