可视化Web报表OnceVI中用户输入表单验证与提交


发布者 ourjs  发布时间 1490274717879
关键字 JS学习  JavaScript 

在上一节中,我们用 OnceVI 制作了一张可录入信息的登录表单

本节主要介绍在表单提交过程中,应用Filter工具箱实现表单提交前的校验和数据提交后的处理。

表单处理函数

以上节内容为基础,本节主要介绍表单提交过程中,应用Filter工具箱实现表单内容验证与返回。并以app.validate和app.handle两个函数为例,展示表单与后台服务器信息交互过程。

app.validate: 在表单提交前对用户输入合法性做校验,返回错误信息则表示不合法 
app.handle: 在表单提交后,对服务返回的信息做响应

服务器处理时间序列如下图所示:

logic diagram

表单内容由前台传递(post)到服务器是,用app.validate检验传输内容有效性,Server接收到信息,并将保存信息与输入信息进行比较,比较结果通过app.handle函数重新返回给用户。


在上节登录界面基础上添加邮箱部分,并通过Data Binding将用户名,密码,和邮箱分别绑定Json 文件数据源中相应的对象,预览结果如下图。

demo temp


表单数据校验

为检验表单填写内容,保证后台服务器存储的是正确无误的信息,在Filter工具箱中添加app.validate函数,代码可见:

var email = function( value, element ) {
return /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
}

if (!userInfo.username) {
return 'Please fill in username'
}

if (userInfo.password.length<5) {
return 'Your password  is not right'
}

if (email(userInfo.email)){
return 'Your email is unvalid'
}

app.validate函数检验的内容包括:用户名是否填写,密码格式是否正确(长度大于5个字符),邮箱格式是否正确。定义email()函数为对邮箱格式正则检验,若email(value)中,value为邮箱格式,则返回true,否则返回false。

可在demo display页面输入表单信息,下图所示,为某次输入过程中密码格式错误的输出:

invalide output

如果需要添加其他信息的正则验证,可参考下列代码:

 // http://jqueryvalidation.org/url-method/
var url = function( value, element ) {
return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?! (?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)* (?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
}
/* date verfication*/
var date = function( value, element ) {
return !/Invalid|NaN/.test( new Date( value ).toString() );
}
/* dateISO verfication*/
var dateISO = function( value, element ) {
return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
}
/*pure number verfication*/
var number = function( value, element ) {
return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
}
/*digit verfication*/
var digits = function( value, element ) {
return /^\d+$/.test( value );
}

表单返回处理

表单信息录入后,需要保存在后端服务器中。在Filter中添加app.handle函数,可以获取后台信息状态反馈,代码如下。

app.handle = function(res_data) {
if (UserInfo.username == res_data.username) {
return 'User info saved successfully'
}
return 'Save failure'
}

UserInfo为前台输入的表单信息,res_data为服务器中存储的表单信息,如果两者内容相同(此处,仅以用户名相同为例解释),则返回用户信息成功保存信息,否则,返回存储失败。通常情况下,表单保存无误。

handle demo


Filter工具箱中全部内容可见下图:

Filter

本例地址:http://cn.oncedoc.com/oncevi.player/oncevi.player.html?file=demo/svgbinder/LoginTemplate_2.svg 
更多示例: http://cn.oncedoc.com/page/view/oncevi-demo









 热门文章 - 分享最多
  1. Github Pages疑似被封: 再也不能用Pages搭建个人博客了
  2. JavaScript条形码生成和扫码识别(Barcode scan)开源库
  3. 关于华为优化30、40老员工的争议
  4. OnceVI前后端分离的数据可视化报表工具简介
  5. 2016 年崛起的 JS 项目
  6. 如何基于SVG矢量图制作一个可填写信息的可视化表单-OnceVI
  7. OnceVI报表制作入门—如何将用户的json数据可视化成名片展示
  8. Web报表OnceVI如何制作条形码与打印二维码(Barcode/Qrcode)

 相关阅读
  1. Web报表OnceVI如何制作条形码与打印二维码(Barcode/Qrcode)
  2. 如何基于SVG矢量图制作一个可填写信息的可视化表单-OnceVI
  3. OnceVI报表制作入门—如何将用户的json数据可视化成名片展示
  4. OnceDB支持全文搜索和关系查询的Redis内存数据库:驱动安装及使用教程
  5. 在OnceIO(Node.JS)中用Redis储存Session
  6. OnceIO的模块拦截与注入:模板文件路由重定向与Model数据改写
  7. OnceIO模块开发:模块注册、模块路由、静态文件重定向以及如何开发与设计一个功能扩展模块
  8. 少年,不要滥用箭头函数啊:JS中lambda表达式的优缺点和使用场景
  9. NodeJS教程:基于OnceIO框架实现文件上传和验证
  10. 在Debian(Raspberry Pi)树莓派上安装NodeJS

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA