我正在使用JQuery Cycle插件(在单独的站点范围的自定义js文件中定义属性)在表单的两个页面(由表格分隔)之间循环。每个页面都有自己的验证组,用于该页面上的控件。第一页有一个“下一步”按钮,当手动点击时,会触发第一个验证组的页面验证。如果失败,则会显示工具提示以供用户更正信息。如果验证成功,则调用cycle next命令。
$('#request-information').cycle('next');
在第二页上,使用提交按钮将控件分组到第二个验证组中。单击提交按钮时,将触发服务器端验证,如果失败,则页面将在回发时重新加载。所有这些都有效,除非第二页失败,我希望表单保留在第二页上。因此,如果重新加载网页,因为表单的第二页无法验证,我需要将起始幻灯片设置为表单的第二页,或者如果不可能,则至少触发循环下一个命令。
似乎我不能将startingslide设置为表单的第二页,因为这将覆盖在单独的js文件中设置的循环函数的其他已定义属性。
所以有人知道如何在点击提交按钮时根据第二个验证组是否失败来推进回发页面加载的第二张幻灯片吗?或者我应该使用viewstate或其他东西做一些不同的事情?
对不起,这是一个冗长的问题。希望它清晰而不混淆。 谢谢
答案 0 :(得分:1)
如果您知道在页面加载时需要转到第二张幻灯片,那么您可以执行以下操作:
var init = { startingSlide: 1 }; // i.e. second slide, the indices are zero-based
$('whatever').cycle($.extend(init, the_name_of_your_global_default_options));
除非需要设置init
,否则您必须安排startingSlide
为空对象文字。如果.cycle()
位于您网页之外的某个位置,那么您可以为特定于网页的选项保留变量,并为调用$.extend()
的{{1}}保留变量。例如,在您的页面中,您可以执行以下操作:
.cycle()
然后在绑定循环内容的JavaScript文件中关闭:
app_name_space.page_cycle_opts = { startingSlide: 1 };
我正在使用app_name_space.page_cycle_opts = app_name_space.page_cycle_opts || { };
$('whatever').cycle($.extend(app_name_space.page_cycle_opts, default_options));
作为占位符,用于您的应用程序已用于避免名称冲突的任何全局命名空间。如果您必须在单个页面上处理多个循环实例,那么您需要按元素ID索引app_name_space
,例如:
page_cycle_opts
然后离开其他地方:
app_name_space.page_cycle_opts['X'] = { startingSlide: 1 };
基本思想是将全局配置选项视为一组默认值,然后通过明确定义和记录的机制允许特定于页面的覆盖。
对于一个冗长的问题,一个冗长的回答。希望它清晰而不混淆。