У меня есть форма, в которой есть дополнительные вопросы, которые следует показывать только в том случае, если они отвечают определенным другим вопросом определенным образом. То, как я его сейчас настроил, прекрасно работает, если я начну с пустой формы. Однако, когда пользователь возвращается, чтобы отредактировать форму и ее загрузку, проверяются ли флажки предварительно из базы данных (через php), мой дизайн рушится.
Поэтому мне нужны некоторые советы или предложения о том, как лучше всего реструктурировать мой код jquery, чтобы он отображал и скрывал правильные элементы при загрузке формы.
Прямо сейчас у меня есть ряд функций .change () для флажков или кнопок выбора, которые заставляют другие (или несколько) элементов скрывать и / или отображать, например, следующее:
$("#elt_prev_divorced").change(function () {
if ($(this).is(":checked")) {
$("#questions_divorced").show("slow");
} else {
$("#questions_divorced").hide("slow");
}
});
$("input").change(function () {
var selected_item = $(this).attr('id');
switch (selected_item) {
case "elt_married":
$("#elt_inrel_yes").attr('checked', true);
$("#elt_reldes_married").attr('checked', true);
$("#li_spouse_or_partner").show("slow");
$("#li_marriages").show("slow");
break;
case ...
}
И затем у меня есть класс CSS с именем «initial_hidden», который устанавливается для всех элементов, которые не должны отображаться при загрузке формы, если форма пуста. В моей функции готовности документа я скрываю все с этим тегом CSS.
(function($) {
$(".initially_hidden").hide();
})(jQuery);
Однако после того, как я скрыл эти элементы, мне теперь нужно сделать эквивалент всех этих функций .change () для обработки формы, загружаемой с существующими данными. Я знаю, что могу копировать и вставлять свои функции изменения в документ, готовый сделать это, но помимо того, что я, конечно, был ужасным стилем, я бы предпочел минимизировать дублирующийся код. Так, как я мог сделать это лучше / эффективнее? Я немного новичок в JQuery, поэтому я не уверен, какое направление выбрать здесь. Спасибо!