回答
的確:服務器端驗證會引發錯誤,但頁面已提交,因此更改的值處於會話狀態。您可以嘗試通過進行plsql驗證來防止這種情況發生,即在發生錯誤時會將會話狀態值清空,但可能不是最佳狀態。我認爲一些JavaScript可以解決一些麻煩。
這裏有一些javascript限制了datepickers中的可選範圍。它不會允許用戶從迄今爲止選擇較大的,反之亦然。它還將該項目設置爲只讀,以便用戶必須通過日期選擇器進行選擇並且不能手動更改。
首頁>的JavaScript>函數和全局變量聲明
function f_check_date(){
var lFrom = $("#P6_DATE_FROM").datepicker("getDate"),
lTo = $("#P6_DATE_TO").datepicker("getDate");
if(lFrom > lTo || lTo < lFrom){
//in case it does happen
$("#P6_DATE_FROM").val('');
$("#P6_DATE_FROM").val('');
alert('Please select a valid date range.');
} else {
//when a date changes, the other datepicker has to be altered so the
//range is adjusted
$("#P6_DATE_FROM").datepicker("option","maxDate",lTo);
$("#P6_DATE_TO").datepicker("option","minDate",lFrom);
};
};
動態操作,頁面加載,執行JavaScript這是在定義
//on load, set the datepicker range in case a date is already present
//when the date changes, call the datecheck function
//and set item to readonly
$("#P6_DATE_FROM")
.datepicker("option","maxDate",$("#P6_DATE_TO").datepicker("getDate"))
.change(f_check_date)
.prop("readonly",true);
$("#P6_DATE_TO")
.datepicker("option","minDate",$("#P6_DATE_FROM").datepicker("getDate"))
.change(f_check_date)
.prop("readonly",true);
謝謝,不幸的是,這似乎是一個弱解決方法。而使用JavaScript將需要重複驗證碼。我想要的是在頁面加載時執行驗證,或者在驗證失敗的情況下將項目重置爲默認值。 – 2013-04-23 14:37:18
我不同意並同意。這是一種解決方法嗎?從意義上說,是的。它是否改善用戶體驗?在我看來它確實如此。用戶界面響應用戶正在做什麼,並且這些字段確實與彼此具有交互性。它還可以防止用戶輸入錯誤的日期範圍,這在我看來可以緩解很多問題。將它與服務器端驗證相結合,這可以是一個真正的驗證並且不需要過程,而且功能強大。如果仍然存在錯誤的範圍,那麼用戶應該明白該做什麼。如果你有報告取決於日期,你可以改變他們的SQL。 – Tom 2013-04-24 12:44:59
爲了進一步闡述我想指出的代碼是非常非常便攜的。這只是javascript。你可以用2個輸入參數(從和到日期字段ID)創建一個函數,並把它放在一個文件中。只需一個電話就可以完成上述所有工作。你甚至可以使這個動態插件。畢竟,你可能認爲apex中的所有內容都很難使用,因爲即使是一個簡單的驗證也需要複製到類似的字段並創建重複。 – Tom 2013-04-24 12:48:05
- 1. Axapta驗證覆蓋始終執行兩次
- 2. Passport.js驗證始終失敗
- 3. RewriteCond始終驗證爲false
- 4. .net終結器是否始終執行?
- 5. 驗證上下文始終爲NULL?
- 6. Firebase身份驗證始終爲零
- 7. 驗證錯誤始終顯示
- 8. 角2異步驗證始終無效
- 9. wpf - 驗證時LDAP始終返回false
- 10. HTML模式驗證始終爲false
- 11. JQuery驗證器始終爲True
- 12. 身份驗證()始終返回無
- 13. DropDownList驗證 - ModelState.IsValid始終爲false
- 14. Laravel MIMETYPES驗證始終爲假
- 15. 會話驗證碼始終是錯的
- 16. 驗證會話始終爲空
- 17. Laravel複選框驗證,始終爲空?
- 18. 身份驗證始終返回無,Django
- 19. 護照驗證req.isAuthenticated始終爲false
- 20. 骨幹驗證插件始終驗證爲真
- 21. Telerik Rad驗證碼 - 驗證始終返回false - ASP.NET
- 22. 驗證在LI3框架檢查(〜始終驗證
- 23. 驗證另一個應用程序始終在運行
- 24. XML模式驗證 - 行號始終返回0
- 25. 用jquery.validate執行驗證
- 26. XmlDocument沒有執行驗證?
- 27. 對xsd執行xml驗證
- 28. 在哪裏執行驗證
- 29. ConcurrentDictionary.GetOrAdd始終執行委託方法
- 30. 始終在Backbone中執行父功能
的驗證 「上提交」 分支?你能解釋一下你的問題嗎? – Tom 2013-04-10 13:44:12
@Tom,我有兩個定義日期範圍的日期選擇器。 「從......開始」的日期應該不晚於'到'日期。在頁面處理中定義的頁面上有驗證。使用錯誤的日期時,驗證應用於使用按鈕提交頁面時,但在提交驗證不適用且日期選取器包含錯誤日期('from'晚於'到'日期)時重新加載頁面。 – 2013-04-10 16:59:46
它會通過javascript來限制日期選擇器嗎?當然,您仍然應該始終進行服務器端驗證,以確保安全。這聽起來像你還沒有服務器驗證 - 或者我得到這個錯誤? – Tom 2013-04-10 19:38:59