验证规则配置手册
需要用到的JS(按顺序):
- detect.js
- eventutil.js
- prototype.js
- longway.js
术语:
- 验证失败:指定的控件没有通过验证,即其不符合我们要求的格式。
规则配置文件基本格式:
- 有且只有一个根结点,元素名为rules。
- rules包含1个或多个rule元素,rule的详细说明及属性见rule元素。
- 每个rule元素包含1个或多个validator元素,validator的详细说明及属性见validator元素。
rule元素
属性名 | 允许为空 | 默认值 | 描述 | 取值区间及说明 |
---|---|---|---|---|
id | 否 | N/A | 此属性必须在一个页面加载的所有规则配置文件中唯一,且在被引用的页面中存在对应的html元素。 | N/A |
type | 是 | Individual | 指出验证时机及验证失败时错误消息的输出方式。 |
|
ctn | 当当前rule元素的type="Summary"时,此属性必须;否则此属性将被忽略。 | N/A | 当type="Summary"时,用于输出汇总后的错误消息的HTML元素。该元素将被用来显示错误消息,所以最好选择div,span,label等易于显示方便的HTML元素。 | 当前页面上HTML元素的ID。 |
mode | 是 | BulletList | 当type不等于Individual时,此属性指明输出消息的基本样式 |
|
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 | 被验证控件的数据类型 |
|
sprt | 是 | N/A | 当type等于Date时,此属性指明日期各段之间的分隔符。 |
|
fmt | 是 | ymd | 当type等于Date时,此属性指明日期的格式。 |
|
CompareValidator (比较验证器)
验证控件的值与另一控件或某常量的大小关系,也可用作数据类型检查。属性名 | 允许为空 | 默认值 | 描述 | 取值区间及说明 |
---|---|---|---|---|
op | Equal | N/A | 用于进行比较的操作符 |
|
comp | 是 | N/A | 欲与之比较的控件。如果此属性不为空且指向的控件存在,则验证关系为 ctrl op comp | 某表单元素的ID |
value | 是 | null | 欲与之比较的值。如果ControlToValidate为空或指向的控件不存在,且验证关系为 ctrl op value | N/A |
type | 是 | String | 被验证控件的数据类型 |
|
sprt | 是 | N/A | 当type等于Date时,此属性指明日期各段之间的分隔符。 |
|
fmt | 是 | ymd | 当type等于Date时,此属性指明日期的格式。 |
|
CustomValidator (自定义验证器)
使用自定义的Javascript方法进行验证。属性名 | 允许为空 | 默认值 | 描述 | 取值区间及说明 |
---|---|---|---|---|
func | 否 | N/A | 该方法接受两个参数 val, args。其中val是指 CustomValidator本身,args包含两个字段 value与 isValid(注意大小写)。 args.value是待验证控件的值,args.isValid指示验证通过或失败。 自定义验证方法验证时,如果验证失败,则设置 args.isValid = false;否则直接退出即可。 | N/A |
常见验证技巧
验证输入框字符的长度必须大于等于6,小于等于12。
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