gpt4 book ai didi

javascript - Coldfusion 表单提交禁用提交按钮

转载 作者:行者123 更新时间:2023-12-02 15:44:20 24 4
gpt4 key购买 nike

我在这里寻求一些建议。我之前发过一个问题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. 或者我是否遗漏了一些东西,而上述这些只是黑客行为,不应该这样做。非常感谢您的回复。提前致谢。

最佳答案

如果用户有唯一的 ID,那么您可以通过查找数据库记录或类似记录来检查他们是否已经完成调查。否则,一个简单的选择是在提交表单后设置 session 变量。该 session 有时间限制,并且在新的浏览器 session 中会有所不同,因此不能保证阻止同一个人再次提交调查,但类似的方法可能会解决您的问题。

 <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) 而不是使用 session 来完成此操作。

关于javascript - Coldfusion 表单提交禁用提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32331930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com