Как повторно заполнить динамически сгенерированные параметры для поля выбора?
-
03-07-2019 - |
Вопрос
ФонУ меня есть два поля формы выбора, соединенные вместе:продолжительность и частота.Когда пользователь выбирает частоту, параметры продолжительности вставляются динамически.Существуют параметры по умолчанию, но они предназначены только для того, чтобы поле не было пустым, когда пользователь его разворачивает.
Например, варианты частоты: «день», «другой день» и «неделя».Если я выберу «день», параметры частоты изменятся на «5 дней», «15 дней» и «30 дней».
ПроблемаПроблема возникает, когда пользователь отправляет форму с ошибками, форма возвращается со всеми повторно заполненными полями формы и выделенными ошибками, за исключением поля выбора частоты, параметры которого генерируются динамически.Он не выделен, и его параметры являются параметрами по умолчанию.
Есть ли способ повторно заполнить эти параметры, если пользователь отправит сообщение с ошибкой.Мы проводим довольно большую проверку JavaScript, поэтому такая ситуация не должна случаться так часто, но мы хотели бы, чтобы получение ошибки было максимально безболезненным для пользователей.
КодЯ использую jquery и плагин jquery под названием cascade, чтобы объединить два поля.(http://plugins.jquery.com/project/cascade)
Вот мой собственный JavaScript.
Этот скрипт генерирует список опций:
var list1 = [
{'When':'86400','Value':' ','Text':' '},
{'When':'172800','Value':' ','Text':' '},
{'When':'604800','Value':' ','Text':' '},
{'When':'86400','Value':'432000','Text':'5 days'},
{'When':'86400','Value':'1296000','Text':'15 days'},
{'When':'86400','Value':'2505600','Text':'30 days'},
{'When':'172800','Value':'1296000','Text':'15 days'},
{'When':'172800','Value':'2505600','Text':'30 days'},
{'When':'172800','Value':'3888000','Text':'45 days'},
{'When':'604800','Value':'2505600','Text':'4 weeks'},
{'When':'604800','Value':'3715200','Text':'6 weeks'},
{'When':'604800','Value':'4924800','Text':'8 weeks'}
];
function commonTemplate(item) {
return "<option value='" + item.Value + "'>" + item.Text + "</option>";
};
function commonMatch(selectedValue) {
return this.When == selectedValue;
};
А это скрипт, который запускает генерацию выбранных опций:
jQuery("#duration).cascade("#frequency",{
list: list1,
template: commonTemplate,
match: commonMatch
})
ВопросЕсть какие-нибудь мысли о том, как заставить динамически генерируемые параметры частоты повторно заполняться, когда форма возвращается в браузер с ошибками?Можно ли использовать каскадный плагин, который я сейчас использую, или какой-то другой метод?
Помощь очень ценится.:-)
Решение
Я не знаком с этим плагином, но не могли бы вы просто запустить change()
событие #duration
и/или #frequency
в документе.готово?
$(document).ready(function() {
$('#duration').change();
$('#frequency').change();
});
Я почти уверен, что все, что делает скрипт, это привязывает что-то к событию изменения выбора (по крайней мере, по умолчанию), чтобы плагин мог творить чудеса...