2009-04-30 3 views
4

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

Например, частотными параметрами являются «день», «другой день» и «неделя». Если я выбираю «день», параметры частоты меняются на «5 дней», «15 дней» и «30 дней».

Проблема Проблема возникает, когда пользователь отправляет форму с ошибками, форма возвращается со всем полем формы заново заселена и ошибки выделены - для выбора поля частот, за исключением - чьи параметры динамически генерироваться. Он не подсвечивается, и его параметры являются параметрами по умолчанию.

Есть ли способ, чтобы эти параметры были повторно заполнены, если пользователь отправил с ошибкой. Мы делаем довольно немного проверки JavaScript, так что эта ситуация не должна происходить так часто, но хотелось бы получить ошибку как безболезненный опыт, насколько это возможно для пользователей.

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

Это мой собственный 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   
}) 

Вопрос в Любых мыслей о том, как получить динамически генерируемые частотные параметры для повторного заполнения, когда форма возвращается в браузер с ошибками? Может ли использовать каскадный плагин, который я сейчас использую, или какой-либо другой метод?

Помощь очень ценится. :-)

+0

+ 1 для хорошо сформулированного вопроса от первого пользователя времени. Это почти слишком редкое событие вокруг этих частей ... –

+0

Спасибо, Паоло. :) Действительно хотел убедиться, что у меня есть хороший ответ, поэтому задал подробный вопрос. Надеюсь, я тоже не зашел за борт. – Rick

ответ

2

Я не знаком с этим плагином, но разве вы не могли просто запустить событие change()#duration и/или #frequency на документе. Уже?

$(document).ready(function() { 
    $('#duration').change(); 
    $('#frequency').change(); 
}); 

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

+0

Похоже, что это сработает, и я над этим работаю. Но теперь проблема заключается в том, что частота, которая не генерируется динамически, не переполняется. :(Устраняем эту проблему, а затем увидим, работает ли ваше решение. – Rick

+0

Это было сделано. Спасибо, Паоло. :) – Rick

+0

Хотя, последнее замечание, мне нужно было только .change() #frequency. – Rick

Смежные вопросы