簡體   English   中英

Coldfusion表單提交禁用提交按鈕

[英]Coldfusion form submit 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. 還是有什么我想念的東西,而以上這些只是hack,不應該做。 非常感謝您的答復。 提前致謝。

如果用戶具有唯一的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 )代替會話來實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM