验证规则绑定

    此指令只能用于添加ms-duplex指令的表单元素上。

    avalon内置验证规则有

    此外要求验征框架能动起来,还必须在所有表单元素外包一个form元素,在form元素上加ms-validate指令。

    因此,要运行起avalon2的内置验证框架,必须同时使用三个指令。ms-validate用于定义各种回调与全局的配置项(如什么时候进行验证)。ms-duplex用于将单个表单元素及相关信息组成一个Field对象,放到ms-validater指令的fields数组中。ms-rules用于定义验证规则。如果验证规则不满足你,你可以自行在avalon.validators对象上添加。

    配置项描述
    fields框架自行添加,用户不用写。为一个数组,放置ms-duplex生成的Field对象。
    onSuccess空函数,单个验证成功时触发,this指向被验证元素this指向被验证元素,传参为一个对象数组外加一个可能存在的事件对象。
    onError空函数,单个验证失败时触发,this与传参情况同上
    onComplete空函数,单个验证无论成功与否都触发,this与传参情况同上。
    onValidateAll空函数,整体验证后或调用了validateAll方法后触发;有了这东西你就不需要在form元素上ms-on-submit="submitForm",直接将提交逻辑写在onValidateAll回调上
    onReset空函数,表单元素获取焦点时触发,this指向被验证元素,大家可以在这里清理className、value
    validateInBlurtrue,在blur事件中进行验证,触发onSuccess, onError, onComplete回调
    validateInKeyuptrue, 在keyup事件中进行验证,触发onSuccess, onError, onComplete回调。当用户在ms-duplex中使用change debounce过滤器时会失效
    validateAllInSubmittrue,在submit事件中执行onValidateAll回调
    resetInFocustrue,在focus事件中执行onReset回调
    deduplicateInValidateAllfalse,在validateAll回调中对reason数组根据元素节点进行去重

    我们看一下如何自定义验证规则.

    比如说我们有一个变态的需求,一个字段可以不填,但如果要填的话一定要是合法的数字,并且大于零.这就需要自定义规则了.

    最后给一个复杂的例子: