Coldfusion表单提交禁用提交按钮

时间:2015-09-01 12:41:02

标签: javascript html coldfusion

我在这里寻求一些建议。我之前发布了一个问题Disable submit button

  1. 我有一个提交给自己的表单,看起来像是

    <cfif isdefined(form.submit)>
        thank you for taking the test
    <cfelse>
       Actual form with radio buttons, ques, ans
    </cfif>
    
  2. 此后,用户参加测试后点击提交并在表单的感谢部分。此时,如果他按下浏览器上的按钮,他仍然会看到该表格。

  3. 此时我已经进行了服务器端验证,如果他刷新表单,他将再次进入感谢页面。

  4. 我尝试禁用提交按钮,但这并不是所有浏览器都能正常工作。
  5. 有谁能告诉我在这种情况下我最好做什么。
  6. 我应该做一个history.forward();在页面上?因此,当用户点击浏览器按钮时,他仍然停留在同一页面上。
  7. 或者我应该以这种方式清除缓存,这样当用户点击后退按钮时,他看不到表单,只是停留在感谢页面上。

    <cfoutput>
        <cfheader name="expires" value="#now()#">
        <cfheader name="pragma" value="no-cache">
        <cfheader name="cache-control" value="no-cache, no-store, must-revalidate">
    </cfoutput>
    
  8. 或者有什么东西我不见了,以上这些只是黑客而且不应该这样做。非常感谢您的回复。提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果用户具有唯一ID,则可以通过查找数据库记录或类似记录来查看他们是否已完成调查。否则,一个简单的选项是在提交表单后设置会话变量。会话是有时间限制的,并且在新的浏览器会话中会有所不同,因此不能保证让同一个人再次提交调查,但这样的事情可能会解决您的问题。

 <cfif structKeyExists(form,"submit") or structKeyExists(session, "completed")>
     <cfif !structKeyExists(session, "completed")>
         <!--- do validation etc here, if all good then --->
         <cflock scope="session" timeout="5">
             <cfset session.completed = true>
         </cflock>
     </cfif>
     thank you for taking the test
 <cfelse>
     Actual form with radio buttons, ques, ans
 </cfif>

或者,您可以使用Cookie(cfcookie)而不是使用会话来完成此操作。