Как повторно заполнить динамически сгенерированные параметры для поля выбора?

StackOverflow https://stackoverflow.com/questions/808328

Вопрос

ФонУ меня есть два поля формы выбора, соединенные вместе:продолжительность и частота.Когда пользователь выбирает частоту, параметры продолжительности вставляются динамически.Существуют параметры по умолчанию, но они предназначены только для того, чтобы поле не было пустым, когда пользователь его разворачивает.

Например, варианты частоты: «день», «другой день» и «неделя».Если я выберу «день», параметры частоты изменятся на «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();
});

Я почти уверен, что все, что делает скрипт, это привязывает что-то к событию изменения выбора (по крайней мере, по умолчанию), чтобы плагин мог творить чудеса...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top