SpreadJS 提供了以下六种数据验证方式,通过设置验证器可以阻止用户的无效输入。
- createNumberValidator:创建基于数字的验证器。
- createDateValidator:创建基于数据的验证器。
- createTextLengthValidator: 创建基于文本长度的验证器。
- createFormulaValidator: 创建基于公式的验证器。
- createFormulaListValidator: 创建基于公式列表的验证器。
- createListValidator: 创建基于列表的验证器。
在数据验证基本应用和自定义数据验证两个示例中我们可以看到SpreadJS数据验证的强大功能。接下来我们看看在数据提交前如何验证用户是否所有输入都是合法的。
判断Value是否能通过一个单元格的验证器,需要使用sheet的isValid方法。比如
activeSheet.isValid(0, 0, 10)。
有了这个方法我们就可以验证所有单元格的内容是否都通过了自己的验证器。
function isSheetValid(sheet){
var rowCount = sheet.getRowCount(),
colCount = sheet.getColumnCount();var isValid = true;for(var row = 0; row < rowCount; row++){for(var col = 0; col < colCount; col++){if(!sheet.isValid(row, col, sheet.getValue(row, col))){
isValid = false;
break;
}}}return isValid;
}
每个cell都遍历一般看起来性能有点低,如果当初始化后页面sheet是有内容的,并且数据默认都是通过验证的。那么这时我们只需要获取到被用户改动过的单元格去验证下是否通过验证就可以了。
function isSheetValidNew(sheet){
var rowCount = sheet.getRowCount(),
colCount = sheet.getColumnCount();var isValid = true;var cells = sheet.getDirtyCells();
for(var i=0; i < cells.length; i++){var dirtyCell = cells[i];
var row = dirtyCell.row, col = dirtyCell.col;
if(!sheet.isValid(row, col, sheet.getValue(row, col))){
isValid = false;
break;
}}return isValid;
}
通过isValid方法的验证,用户表单输入的验证流程就完整了,一切在前端搞定。
更多资源
SpreadJS中文学习指南:http://demo.grapecity.com.cn/SpreadJS/TutorialSample/#/samples
SpreadJS在线英文产品文档:http://sphelp.grapecity.com/webhelp/SpreadJSWeb/webframe.html#welcome.html
如果您对SpreadJS产品感兴趣,可以到官方网站下载试用:/developer/spreadjs
如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn