2013-04-08 105 views
3

是否可以在页面加载时执行验证,无论它是提交还是刚加载?apex始终执行验证

我需要实现它来处理页面部分中创建的普通验证以及分配给数字字段的最小最大验证。

是否可以实现?

+0

的验证 “上提交” 分支?你能解释一下你的问题吗? – Tom 2013-04-10 13:44:12

+0

@Tom,我有两个定义日期范围的日期选择器。 “从......开始”的日期应该不晚于'到'日期。在页面处理中定义的页面上有验证。使用错误的日期时,验证应用于使用按钮提交页面时,但在提交验证不适用且日期选取器包含错误日期('from'晚于'到'日期)时重新加载页面。 – 2013-04-10 16:59:46

+0

它会通过javascript来限制日期选择器吗?当然,您仍然应该始终进行服务器端验证,以确保安全。这听起来像你还没有服务器验证 - 或者我得到这个错误? – Tom 2013-04-10 19:38:59

回答

1

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

谢谢,不幸的是,这似乎是一个弱解决方法。而使用JavaScript将需要重复验证码。我想要的是在页面加载时执行验证,或者在验证失败的情况下将项目重置为默认值。 – 2013-04-23 14:37:18

+0

我不同意并同意。这是一种解决方法吗?从意义上说,是的。它是否改善用户体验?在我看来它确实如此。用户界面响应用户正在做什么,并且这些字段确实与彼此具有交互性。它还可以防止用户输入错误的日期范围,这在我看来可以缓解很多问题。将它与服务器端验证相结合,这可以是一个真正的验证并且不需要过程,而且功能强大。如果仍然存在错误的范围,那么用户应该明白该做什么。如果你有报告取决于日期,你可以改变他们的SQL。 – Tom 2013-04-24 12:44:59

+0

为了进一步阐述我想指出的代码是非常非常便携的。这只是javascript。你可以用2个输入参数(从和到日期字段ID)创建一个函数,并把它放在一个文件中。只需一个电话就可以完成上述所有工作。你甚至可以使这个动态插件。毕竟,你可能认为apex中的所有内容都很难使用,因为即使是一个简单的验证也需要复制到类似的字段并创建重复。 – Tom 2013-04-24 12:48:05