回答
的确:服务器端验证会引发错误,但页面已提交,因此更改的值处于会话状态。您可以尝试通过进行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