Longway js 框架 使用

验证规则配置手册

需要用到的JS(按顺序):

  • detect.js
  • eventutil.js
  • prototype.js
  • longway.js

术语:

  • 验证失败:指定的控件没有通过验证,即其不符合我们要求的格式。

规则配置文件基本格式:

<?xml version="1.0" encoding="utf-8" ?> <rules> <rule id="login" type="Alert" mode="BulletList" header="Error occurs:"> <validator impl="RequiredFieldValidator" ctrl="loginName" msg="LoginName must not be empty." ctn="loginNameError"> </validator> <validator impl="RequiredFieldValidator" ctrl="password" msg="Password must not be empty." ctn="passwordError"> </validator> ... </rule> </rules> 格式说明:
  1. 有且只有一个根结点,元素名为rules
  2. rules包含1个或多个rule元素,rule的详细说明及属性见rule元素
  3. 每个rule元素包含1个或多个validator元素,validator的详细说明及属性见validator元素

rule元素

属性名 允许为空 默认值 描述 取值区间及说明
id N/A 此属性必须在一个页面加载的所有规则配置文件中唯一,且在被引用的页面中存在对应的html元素。 N/A
type Individual 指出验证时机及验证失败时错误消息的输出方式。
  • Individual: 在调用Longway.ValidationRuleFactory.validate(ruleId)时和各Html表单控件onchange触发时进行验证。各validator错误消息单独输出,输出区域由各validator的ctn属性决定。
  • Summary: 仅在调用Longway.ValidationRuleFactory.validate(ruleId)时触发验证。错误消息汇总后输出,输出区域由当前rule元素的ctn属性决定。
  • Alert: 仅在调用Longway.ValidationRuleFactory.validate(ruleId)时触发验证。错误消息汇总后弹出警告框输出。
ctn 当当前rule元素的type="Summary"时,此属性必须;否则此属性将被忽略。 N/A 当type="Summary"时,用于输出汇总后的错误消息的HTML元素。该元素将被用来显示错误消息,所以最好选择div,span,label等易于显示方便的HTML元素。 当前页面上HTML元素的ID。
mode BulletList type不等于Individual时,此属性指明输出消息的基本样式
  • List: 每条错误消息占一行。
  • BulletList: 当type等于Alert时,每条错误消息占一行,每行加以"- "前缀。当type等于Summary时,使用无序列表<ul>输出,每条错误消息为一个<li>
  • SingleParagraph: 所有错误消息连成单个段落汇总后输出。
header 空字符串 当type不等于Individual时,用于汇总错误消息的标题。 任意字符串。

validator元素

validator,验证器。每个验证器提供对某一个表单元素(或者字段、控件)的验证。Longway提供五种基本的验证器,validator的impl属性指明验证器的类型。impl的取值可以是下列中的一种:
  • RequiredFieldValidator: 必填字段验证器
  • RegularExpressionValidator: 正则表达式验证器
  • RangeValidator: 范围验证器
  • CompareValidator: 比较验证器
  • CustomValidator:自定义验证器
所有验证器具备一些共有的属性:
属性名 允许为空 默认值 描述 取值区间及说明
msg N/A 错误消息。验证失败时,输出到页面上的提示信息。 N/A
ctrl N/A 此属性指明需要验证的表单元素。 某表单元素的ID
ctx 所属rule的type等于Individual时,此属性必须提供。 N/A 错误消息的输出容器,即页上某个元素的Id。验证失败时,该元素的内容(即innerHTML)将被错误消息取代,验证通过时,其Body会被清空。 当前页面上HTML元素的ID。
每种验证器的详细说明及其特有属性如下:

RequiredFieldValidator (必填字段验证器)

验证指定控件的值不能为空或由空白字符组成。无特有属性。

RegularExpressionValidator (正则表达式验证器)

验证控件的值是否符合指定的正则表达式,注:验证时是全文匹配。
属性名 允许为空 默认值 描述 取值区间及说明
regex N/A 用于验证的正则表达式(Perl风格),当控件的值不匹配此正则表达式时,验证失败。 N/A

RangeValidator (范围验证器)

验证控件的值是否在指定范围内。即验证: min <= ctrl.value <= max。
属性名 允许为空 默认值 描述 取值区间及说明
min N/A 最小值 N/A
max N/A 最大值 N/A
type String 被验证控件的数据类型
  • Integer:整型
  • Double:浮点型
  • Currency:金额。注:未经测试,暂勿使用。
  • Date:日期。指明控件的值必须是日期类型,格式由fmt及sprt属性决定。
  • String:字符串
sprt N/A 当type等于Date时,此属性指明日期各段之间的分隔符。
  • -
  • /
fmt ymd 当type等于Date时,此属性指明日期的格式。
  • ymd:年月日,比如 1980-4-23
  • mdy:月日年,比如 4/23/1980
  • dmy:日月年,比如 23-4-1980
注:分隔符由sprt属性决定。

CompareValidator (比较验证器)

验证控件的值与另一控件或某常量的大小关系,也可用作数据类型检查。
属性名 允许为空 默认值 描述 取值区间及说明
op Equal N/A 用于进行比较的操作符
  • DataTypeCheck:数据类型检查
  • NotEqual或者!=:不等于
  • GreaterThan或者>=:大于等于
  • LessThan或者>:小于
  • LessThanEqual或者&lgt;=:小于等于
  • Equal或者==:等于。事实上,其他其他任意字符串也是“等于”,不过推荐使用Equal。
comp N/A 欲与之比较的控件。如果此属性不为空且指向的控件存在,则验证关系为 ctrl op comp 某表单元素的ID
value null 欲与之比较的值。如果ControlToValidate为空或指向的控件不存在,且验证关系为 ctrl op value N/A
type String 被验证控件的数据类型
  • Integer:整型
  • Double:浮点型
  • Currency:金额。注:未经测试,暂勿使用。
  • Date:日期。指明控件的值必须是日期类型,格式由fmt及sprt属性决定。
  • String:字符串
sprt N/A 当type等于Date时,此属性指明日期各段之间的分隔符。
  • -
  • /
fmt ymd 当type等于Date时,此属性指明日期的格式。
  • ymd:年月日,比如 1980-4-23
  • mdy:月日年,比如 4/23/1980
  • dmy:日月年,比如 23-4-1980
注:分隔符由sprt属性决定。

CustomValidator (自定义验证器)

使用自定义的Javascript方法进行验证。
属性名 允许为空 默认值 描述 取值区间及说明
func N/A 该方法接受两个参数 val, args。其中val是指 CustomValidator本身,args包含两个字段 value与 isValid(注意大小写)。 args.value是待验证控件的值,args.isValid指示验证通过或失败。 自定义验证方法验证时,如果验证失败,则设置 args.isValid = false;否则直接退出即可。 N/A
示例: // 验证某控件的值不可以是 "administrator"。 function keywordValidate(val, args) { if (args.value == "administrator") { args.isValid = false; } }

常见验证技巧

验证输入框字符的长度必须大于等于6,小于等于12。

<validator impl="RegularExpressionValidator" msg="密码最多12位,最少6位。" ctn="password_error" regex=".{6,12}" ctrl="password"> </validator> 导入需要的js脚本,

Longway.ValidationRuleFactory.initValidatorRule("do_test");

 添加这句js代码 文档加载完成执行,向Longway框架中添加需要验证的form ,参数为form的ID;

on_submin=function(){
 //验证方法参数为form  ID  若失败返回true
  if (!Longway.ValidationRuleFactory.validate("do_test") ) {
  return false;
 }
}

添加类似的验证代码,提交时执行,其中的

  if (!Longway.ValidationRuleFactory.validate("do_test") ) {
  return false;
 }

必须放在逻辑代码之前。

修改longway.js 文件

第680行左右, _validationConfigFiles: ["/validation.xml"],

数组中放的是写验证的xml文件的路径,可以多个。

编写validation.xml

<?xml version="1.0" encoding="utf-8"?>
<rules>
 <rule id="do_test" type="Individual" ctn="summaryError" mode="List" header="Detail Validation:">
 <validator impl="RequiredFieldValidator" ctrl="name" msg="姓名不能为空!" ctn="name_error" />
 <validator impl="RegularExpressionValidator  " ctrl="password" msg="请选择运营商" ctn="password_error" regex=".{6,18}"/>
 <validator impl="RequiredFieldValidator" ctrl="repassword" msg="联系人地址不能为空!" ctn="repassowrd_error"  op="Equal" comp="password" type="String"/>
</rule>

</rules>

常用验证RequiredFieldValidator 非空验证

 RegularExpressionValidator  正则表达式验证

RequiredFieldValidator 比较验证

ctrl   验证的空间id

ctn  显示提示信息的 <span>标签id

over

原文地址:https://www.cnblogs.com/SXLBlog/p/1760371.html