这真的很奇怪。我在js库中进行验证。我检查字段是空白还是空,如果是,则抛出错误。
我有一个我想检查的日期字段。如果我没有输入默认值,代码工作正常。它说日期是空白的,然后当我输入一个值时它会让它通过。但是如果我输入@Now或@Today的默认值,如果用户碰巧删除了日期,则不会收到错误。我知道这不是必要的 - 我可以放一个必要的验证器,但它让我发疯,我无法弄明白。
//This SSJS script library consolidates all the validation in one place
//The postValidationError() function flags a control as invalid and provides an error message
//so that the XPages ErrorMessage control is used to display the error on the page.
var validateForm = function(){
var valid = true;
var control;
var val;
// *** REPEAT THE FOLLOWING BLOCK OF CODE FOR EACH CONTROL FOR BASIC "REQUIRED" VALIDATION
// For each field, change the Control Name in getComponent() and the error message text in postValidationError()
// Optionally, modify the IF conditions with more complex JavaScript for value ranges, regular expressions, data lookups, etc.
//Validate Location
control = getComponent("loc");
val = control.getValue();
if (isEmpty(val)) {
valid = false;
postValidationError(control,"Please enter a Loc");
}
//Validate Work Category
control = getComponent("workCategory");
val = control.getValue();
if (isEmpty(val)) {
valid = false;
postValidationError(control,"Please enter a Work Category");
}
//Validate Work Sub Category
control = getComponent("workSubCategory");
val = control.getValue();
if (isEmpty(val)) {
valid = false;
postValidationError(control,"Please enter a Sub Work Category");
}
//Validate Date
control = getComponent("date");
val = control.getValue();
if (isEmpty(val)) {
valid = false;
postValidationError(control,"Please enter a date");
}
//Validate Time Spent
control = getComponent("timeSpent");
val = control.getValue();
if (isEmpty(val)) {
valid = false;
postValidationError(control,"Please enter Time Spent");
}
// *** ---------------------------------------------------------------- ***
return valid;
}
function postValidationError(control, msg) {
if ((typeof msg) != "string")
return;
var msgObj = new javax.faces.application.FacesMessage(javax.faces.application.FacesMessage.SEVERITY_ERROR, msg, msg);
facesContext.addMessage(control.getClientId(facesContext), msgObj);
control.setValid(false);
}
function isEmpty(o){
return (o == null || o == "") ? true: false;
//return (o == null || @Trim($A(o)[0]) == "" ) ? true : false;
}
function $A( object ){
try {
if( typeof object === 'undefined' || object === null ){ return []; }
if( typeof object === 'string' ){ return [ object ]; }
if( typeof object.toArray !== 'undefined' ){return object.toArray();}
if( object.constructor === Array ){ return object; }
return [ object ];
} catch( e ) { }
}
答案 0 :(得分:2)
Bryan,XPage中用于验证的推荐方法是使用验证器,编写更少的代码,可以有选择地控制何时验证字段,可以将不同的检查彼此分开。
检查我的thoughts about validation。简而言之: