如何为选择字段重新填充动态生成的选项?

时间:2009-04-30 18:16:00

标签: javascript jquery jquery-plugins

背景 我有两个链接在一起的选择表单字段:持续时间和频率。当用户选择频率时,动态插入持续时间选项。有默认选项,但这些只是在用户展开时字段不为空。

例如,频率选项为“日”,“其他日”和“周”。如果我选择“日期”,频率选项将更改为“5天”,“15天”和“30天”。

问题 问题出现在用户提交带有错误的表单时,返回表单并重新填充所有表单字段并突出显示错误 - 频率选择字段除外 - 其选项是动态生成的。它没有突出显示,它的选项是默认选项。

如果用户提交错误,我是否可以重新填充这些选项?我们正在进行相当多的JavaScript验证,因此这种情况不应该经常发生,但是希望尽可能轻松地为用户提供错误的体验。

代码 我正在使用jquery和一个名为cascade的jquery插件来将两个字段链接在一起。 (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          
})

问题 当表单返回到浏览器有错误时,有关如何获取动态生成的频率选项重新填充的任何想法?可以使用我目前正在使用的级联插件还是其他一些方法?

非常感谢帮助。 : - )

1 个答案:

答案 0 :(得分:2)

我对这个插件不熟悉,但你不能在document.ready上发起change()和/或#duration的{​​{1}}事件吗?

#frequency

我很确定所有脚本都在做的是绑定到select的更改事件(默认情况下,至少),所以这应该触发插件才能发挥其魔力......