背景 我有两个链接在一起的选择表单字段:持续时间和频率。当用户选择频率时,动态插入持续时间选项。有默认选项,但这些只是在用户展开时字段不为空。
例如,频率选项为“日”,“其他日”和“周”。如果我选择“日期”,频率选项将更改为“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
})
问题 当表单返回到浏览器有错误时,有关如何获取动态生成的频率选项重新填充的任何想法?可以使用我目前正在使用的级联插件还是其他一些方法?
非常感谢帮助。 : - )
答案 0 :(得分:2)
我对这个插件不熟悉,但你不能在document.ready上发起change()
和/或#duration
的{{1}}事件吗?
#frequency
我很确定所有脚本都在做的是绑定到select的更改事件(默认情况下,至少),所以这应该触发插件才能发挥其魔力......