Ich habe ein Änderungsereignis, das gut funktioniert, aber ich muss es wiederkehren lassen.
Ich habe also eine Funktion, die bei einer Änderung ausgelöst wird und andere Dropdowns basierend auf einem Klassenselektor "ändert" (beachten Sie "Dropdowns", es kann mehr als eine geben). Diese Proxy-Änderung löst die Funktion nicht aus und schlägt daher fehl. Wie kann ich es zum Laufen bringen?
Code
$(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);
}
}
}
Die bisherigen Vorschläge scheinen zu funktionieren, aber da das Änderungsereignis einen Ajax-Beitrag auslöst, scheint es hier jetzt zu scheitern. Ich werde damit herumspielen, aber das ist etwas für eine andere Frage, die ich fühle.