Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果验证组无效,JQuery Cycle插件需要循环到背面的下一张幻灯片_Javascript_Jquery_Jquery Plugins_Jquery Cycle - Fatal编程技术网

Javascript 如果验证组无效,JQuery Cycle插件需要循环到背面的下一张幻灯片

Javascript 如果验证组无效,JQuery Cycle插件需要循环到背面的下一张幻灯片,javascript,jquery,jquery-plugins,jquery-cycle,Javascript,Jquery,Jquery Plugins,Jquery Cycle,我正在使用JQuery循环插件(在单独的站点范围的自定义js文件中定义属性)在表单的两个页面(由表分隔)之间循环。每个页面上的控件都有自己的验证组。第一个页面有一个“下一步”按钮,当手动单击该按钮时,将触发第一个验证组的页面验证。如果失败,将显示工具提示,供用户更正信息。如果验证成功,则调用cycle next命令 $('#request-information').cycle('next'); 在第二个页面上,使用“提交”按钮将控件分组到第二个验证组中。单击submit按钮时,会触发服务器端

我正在使用JQuery循环插件(在单独的站点范围的自定义js文件中定义属性)在表单的两个页面(由表分隔)之间循环。每个页面上的控件都有自己的验证组。第一个页面有一个“下一步”按钮,当手动单击该按钮时,将触发第一个验证组的页面验证。如果失败,将显示工具提示,供用户更正信息。如果验证成功,则调用cycle next命令

$('#request-information').cycle('next');
在第二个页面上,使用“提交”按钮将控件分组到第二个验证组中。单击submit按钮时,会触发服务器端验证,如果验证失败,则在回发时重新加载页面。所有这些都可以,除非第二页失败,我希望表单保留在第二页。因此,如果由于表单的第二页无法验证而重新加载网页,我需要将起始幻灯片设置为表单的第二页,或者如果不可能,至少触发cycle next命令

我似乎无法将startingslide设置为表单的第二页,因为这将覆盖在单独的js文件中设置的cycle函数的其他已定义属性

那么,是否有人知道如何根据第二个验证组在单击“提交”按钮时是否失败而进入回发页面加载的第二张幻灯片?或者我应该使用viewstate做一些不同的事情吗

对不起,这是一个冗长的问题。希望它清晰而不混乱。
谢谢

如果您知道在加载页面时需要转到第二张幻灯片,则可以执行以下操作:

var init = { startingSlide: 1 }; // i.e. second slide, the indices are zero-based
$('whatever').cycle($.extend(init, the_name_of_your_global_default_options));
app_name_space.page_cycle_opts = { startingSlide: 1 };
您只需将
init
设置为空对象文本,除非需要设置
startingSlide
。如果
.cycle()
位于页面之外的某个位置,则可以为页面特定的选项和调用
.cycle()
$.extend()
保留一个变量。例如,在页面中,您可以执行以下操作:

var init = { startingSlide: 1 }; // i.e. second slide, the indices are zero-based
$('whatever').cycle($.extend(init, the_name_of_your_global_default_options));
app_name_space.page_cycle_opts = { startingSlide: 1 };
然后在绑定cycle内容的JavaScript文件中:

app_name_space.page_cycle_opts = app_name_space.page_cycle_opts || { };
$('whatever').cycle($.extend(app_name_space.page_cycle_opts, default_options));
我使用
app\u name\u space
作为应用程序已经使用的全局名称空间的占位符,以避免名称冲突。如果您必须在一个页面上处理多个循环实例,那么您需要按元素ID对
page\u cycle\u opts
进行索引,例如:

app_name_space.page_cycle_opts['X'] = { startingSlide: 1 };
然后到别处去:

$('whatever').each(function() {
    $(this).cycle($.extend(
        app_name_space.page_cycle_opts[this.id] || { },
        default_options
    ));
});

基本思想是将全局配置选项视为一组默认值,然后通过定义良好的文档机制允许页面特定重写。


对冗长问题的冗长回答。希望它清晰易懂。

哇,非常感谢你的回答。谢谢你抽出时间。它非常清楚,我现在正在摆弄它。这对我会有用的。感谢您向我介绍$.extend函数。我知道必须有一种方法来添加属性,只是不知道如何添加。@DMase05:BTW,
$.extend()
修改它的第一个参数,所以如果有必要,你应该提供一个空对象作为第一个参数:
x=$.extend({},a,b,…)。jQuery有许多人们似乎不知道的小实用程序:。干杯