我有一个分页的表单页面.我想保留表单值,因为用户使用分页进入上一页或下一页.我知道可以使用会话范围来完成.但是,这里我不想使用会话范围.有没有人对如何在不使用会话时这样做有任何想法?请告诉我.
这是我的表单页面:
<cfoutput>
<form action="#buildUrl(action='survey.save_surveyresults',querystring='surveyId=#rc.surveyid#')#" method="post">
<input type="hidden" name="id" value="0">
<input type="hidden" name="surveyid" value="#rc.surveyId#">
<div class="container-fluid">
<div class="row">
<div class="control-group">
<label class="label-control" for="name">Name</label>
<div class="controls">
<input type="text" name="name" id="name" required="true" placeholder="enter your name" value="#rc.name#">
</div>
</div>
<div class="control-group">
<label class="label-control" for="email">Email</label>
<div class="controls">
<input type="text" name="email" id="email" required="true" placeholder="enter your Email" value="#rc.email#">
</div>
</div>
<cfloop query="rc.questions" startrow="#startrow#" maxrows="#perpage#">
<!--- because we have all questions and answers in query we can use switch instead calling template or view
for each question, so its simplify directory structures, questions directory is not necessary now --->
<h3>#CurrentRow#<cfif rc.questions.isrequired><strong>*</strong></cfif>. #rc.questions.question#<h3>
<cfswitch expression="#rc.questions.template#">
<fieldset>
<cfcase value="textbox">
<input type="text" class="input-xlarge" name="#template#_#questionid#" id="question_#questionid#">
</cfcase>
<cfcase value="multiplechoice">
<cfloop list="#answer#" delimiters="," index="i">
<div class="controls">
<label>
<input type="radio" name="#template#_#questionid#" id="question_#questionid#" value="#answerID#" >
<span class="lbl">#i#</span>
</label>
</div>
</cfloop>
</cfcase>
<cfcase value="multiplechoiceother">
<cfloop list="#answer#" delimiters="," index="i">
<div class="controls">
<label>
<input type="radio" name="#template#_#questionid#" id="question_#questionid#" value="#answerID#" >
<span class="lbl">#i#</span>
</label>
</div>
</cfloop>
<div class="control-group">
<label class="label-control" for="other">Other</label>
<div class="controls">
<input type="text" class="input-xlarge" name="#template#_#questionid#" id="question_#questionid#">
</div>
</div>
</cfcase>
</fieldset>
</cfswitch>
</cfloop>
<p></p><br />
<cfif startrow GT 1>
<a href="#buildUrl(action='survey.survey_question',querystring='surveyid=#rc.surveyid#&startrow=#startrow-perpage#')#" class="btn">Previous</a>
</cfif>
<cfif (startrow + perpage - 1) lt rc.questions.recordcount>
<a href="#buildUrl(action='survey.survey_question',querystring='surveyid=#rc.surveyid#&startrow=#startrow + perpage#')#" class="btn">Next</a>
<cfelse>
<button type="submit" name="submit" class="btn btn-success">Finish</button>
</cfif>
</div>
</div>
</div>
</form>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
您可以将表单分成不同的部分,并将其全部放在一个页面中.您可以使用JavaScript根据表单的"页面"隐藏/显示表单的某些部分.
这样就可以快速前进或后退,因为在完成整个表单后它们才会被提交,并且它们输入的值仍然存在...并且使用jQuery或其他JavaScript库非常容易处理.
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |