obtiene - llamar funcion javascript html sin evento
Cómo desencadenar el evento de cambio de jQuery en el código (5)
Tengo un evento de cambio que funciona bien, pero necesito que vuelva a funcionar.
Así que tengo una función que se desencadena en un cambio que "cambiará" otras listas desplegables basadas en un selector de clase (observe "dropdownS", podría haber más de uno). Este cambio de proxy no activa la función y falla. ¿Cómo puedo hacer que funcione?
Código
$(document).ready(function () {
var activeDropBox = null;
$("select.drop-box").change(function () {
var questionId = $(this).attr("questionId");
var selectedAnswer = $(this).val();
activeDropBox = this;
alert(this.questionId);
$.ajax(
{
type: "POST",
url: answerChangedActionUrl,
data: { questionId: questionId, selectedValue: selectedAnswer },
success: function (data) {
SetElementVisibility(data.ShowElement, questionId);
}, error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(''XMLHttpRequest:'' + XMLHttpRequest.responseText);
alert(''textStatus:'' + textStatus);
alert(''errorThrown:'' + errorThrown);
}
});
});
function SetElementVisibility(visible, questionId) {
// I would like each child to then trigger the change event...
$(".childOf" + questionId)[visible ? ''show'' : ''hide''](''slow'');
// Suggested code
//$(".childOf" + questionId + " select").trigger("change");
if (!visible) {
$(".childOf" + questionId + " select").attr(''selectedIndex'', 0);
}
}
}
Las sugerencias hasta ahora parecen funcionar, pero como el evento de cambio desencadena una publicación de Ajax ahora parece fallar aquí. Voy a jugar con eso, pero eso es algo para otra pregunta que siento.
La forma sin parámetros del método change() desencadena un evento de change
. Puedes escribir algo como:
$(document).ready(function() {
$("#yourInitialElementID").change(function() {
// Do something here...
$(".yourDropDownClass").change();
});
});
Usa el método trigger ()
$(selector).trigger("change");
Usa eso :
$(selector).trigger("change");
O
$(''#id'').trigger("click");
O
$(''.class'').trigger(event);
El desencadenador puede ser cualquier evento que soporte JavaScript. Espero que sea fácil de entender para todos ustedes.
para mí $(''#element'').val(''...'').change()
es la mejor manera.
$(selector).change()
.trigger ("cambio")
Una alternativa más slower , mejor para la abstracción.
$(selector).trigger("change")