如何使用JQuery实现“向导”样式页面?

时间:2010-01-20 23:37:34

标签: jquery ajax

我正在网上实施调查问卷,我希望每个问题块都有自己的“页面”,这样用户就不必滚动了。但是,页面加载有两个问题:a)它们需要时间(并且有明显的闪烁/刷新)和b)这样的方法会迫使我进行数据表插入加上多次更新(或者将它存储在我的会话中)。

我如何使用JQuery让用户在客户端通过调查问卷页面,随时回答问题?然后,当最后提交所有答案时,我将能够处理数据存储。

还有一件事......如果用户需要一段时间,有没有办法确保会话没有超时?

4 个答案:

答案 0 :(得分:3)

就个人而言,在这种情况下,我可能会采用简单方式。在隐藏div中的初始页面加载中预先加载所有内容。然后使用jQuery显示/隐藏每个问卷“页面”:

div#pageTwo {
     display: none;
}

<div>
    <div id="pageOne">
        <p>Do you like the color blue?<p>
        <p>What about green?</p>
        <a href="#" onClick="gotoPageTwo();">Next Page</a>
    </div>
    <div id="pageTwo">
        <p>...</p>
    </div>
</div>

其中gotoPageTwo是一个利用jQuery在div之间进行转换的函数。这可以像$("div#pageOne").hide()$("div#pageTwo").show()一样简单,或者您可以为稍微增强的用户体验添加一些漂亮的平滑动画过渡(只是不要过分,因为太多的动画很快就会分散注意力。)< / p>

然后,您还可以使用jQuery以某个间隔(短于会话超时时间)将AJAX调用回服务器,以发出简单请求。后台的简单请求将确保用户会话保持活跃状态​​。

答案 1 :(得分:3)

我不只是试图兜售我的jQuery插件或任何东西,但我确实有一个不错的jQuery向导实现可以帮助你很多:http://github.com/dominicbarnes/jWizard / http://plugins.jquery.com/project/jwizard

答案 2 :(得分:2)

这在JavaScript / jQuery中非常简单。加载整个问卷HTML并隐藏除要显示的所有块之外的所有块有什么问题?这就像$(element).hide();$(element).show();一样简单。

如果整个调查问卷的HTML太大,您可以尝试将每个块分成自己的 HTTP请求,并让JavaScript通过Ajax每5秒钟(或左右)加载一次。通过这种方式,用户可以立即启动调查问卷,而不是等待整个事情加载,这也可以是保持会话活跃的一种方式。

答案 3 :(得分:1)

快速谷歌搜索产生了这一点 - http://plugins.jquery.com/project/formwizard

至于你的第二个问题,你可以实现一个'keep-alive'页面,你可以定期发送AJAX请求到setInterval