4

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

例如,频率选项是“day”、“other day”和“week”。如果我选择“天”,频率选项将更改为“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          
})

问题 当表单返回到浏览器并出现错误时,如何获得动态生成的频率选项以重新填充有什么想法吗?可以使用我当前使用的级联插件或其他方法吗?

非常感谢您的帮助。:-)

4

1 回答 1

2

我不熟悉这个插件,但你不能只触发和/或document.ready的change()事件吗?#duration#frequency

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

我很确定脚本所做的所有事情都是将内容绑定到 select 的 change 事件(至少默认情况下),这样应该会触发插件发挥它的魔力......

于 2009-04-30T18:29:12.640 回答