avalon的表单验证

表单验证

avalon内置了强大的表单验证功能,它需要结合ms-duplexms-validatems-rules这个三个指令一起使用。

  • ms-duplex负责监控每个表单元素的输入。
  • ms-rules负责对表单元素的值进行各种检测,包括非空验证,长度验测,格式匹配等等。
  • ms-validate负责控制验证的时机,及针对每个表单元素的验证结果触发各种回调。

验证规则定义在avalon.validators对象中, 为一个个带有message与get属性的对象.

 1 avalon.shadowCopy(avalon.validators, {
 2     pattern: {
 3         message: ‘必须匹配{{pattern}}这样的格式‘,
 4         get: function (value, field, next) {
 5             var elem = field.dom
 6             var data = field.data
 7             if (!isRegExp(data.pattern)) {
 8                 var h5pattern = elem.getAttribute("pattern")
 9                 data.pattern = new RegExp(‘^(?:‘ + h5pattern + ‘)$‘)
10             }
11             next(data.pattern.test(value))
12             return value
13         }
14     },
15     digits: {
16         message: ‘必须整数‘,
17         get: function (value, field, next) {//整数
18             next(/^\-?\d+$/.test(value))
19             return value
20         }
21     }
22  })

手动调用验证并根据点击不同按钮提交不同网址的例子

<!DOCTYPE html>
<html>
    <head>
        <title>ms-validate</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <script src="../dist/avalon.js"></script>
        <script>
            avalon.validators.gtOne = {
                message: ‘必须数字并大于1‘,
                get: function (value, field, next) {
                    //想知道它们三个参数是什么,可以console.log(value, field,next)
                    var ok = Number(value) > 1
                    next(ok)
                    return value
                }
            }
            var greasons = []
            var vm = avalon.define({
                $id: "test",
                aaa: ‘‘,
                url: ‘javascript:void(0)‘,
                message: ‘‘,
                submit:  function (url) {//submit是真正的验证方法,通过点击时手动验证
                    vm.validate.onManual()
                    setTimeout(function () {
                        if (greasons.length) {
                            var a = greasons.map(function (el) {
                                return ‘<p>‘ + el.getMessage() + ‘</p>‘
                            })
                            vm.message = a.join(‘‘)//打印所有错误
                            vm.url = ‘javascript:void(0)‘
                        } else {
                            greasons = []
                            vm.message = ‘‘
                            vm.url = url
                        }
                    })

                },
                validate: {
                    //禁止提交时自动验证
                    validateAllInSubmit: false,
                    //这个是用来占位的
                    onManual: avalon.noop,
                    //这个转移到sumbit方法
                    onValidateAll: function (reasons) {
                        greasons = reasons.concat()
                    }
                }
            })
        </script>
    </head>

    <body ms-controller="test">
        <form class="cmxform" ms-validate="@validate" ms-attr=‘{action: @url}‘ >
            <fieldset>
                <legend>自定义规则</legend>
                <p>
                    <input
                        ms-duplex="@aaa"
                        ms-rules="{required: true, number:true, gtOne: true}"
                        />
                </p>
                <p>
                    <input :click="@submit(‘/add.php‘)" type="submit" value="add"/>
                    <input :click="@submit(‘/update.php‘)" type="submit" value="update"/>
                </p>
                <p ms-html="@message" style="color: red"></p>
            </fieldset>
        </form>
    </body>
</html>

  

时间: 2024-10-03 14:01:01

avalon的表单验证的相关文章

python :表单验证--对每一个输入框进行验证

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta charset="UTF-8"/> <title>Title</title> <style> .error{ color

jquery插件,表单验证validation plugin的使用

笔记: 一.首先引入插件 <script type="text/javascript" src="js/jquery-1.10.0.js" ></script> <script type="text/javascript" src="js/jquery.validate-1.13.1.js" ></script> 列子:一个简单的登录表单验证 1 <form id=&quo

AngularJs 表单验证

看到一些博客说这个框架要过时了,但是还是学习了下,觉的很方便的一个框架,有空的同学可以看看,适合我们入门看,比较基础. 对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $scope 上下文对象上创建一个 model 来表示我们编辑的内容. $scope.model = { id : 8, name: "alice", email: "

表单验证&amp;lt;AngularJs&amp;gt;

经常使用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,仅仅要在输入字段元素上加入HTML5标记required就可以: <input type="text" required />   2. 最小长度 验证表单输入的文本长度是否大于某个最小值,在输入字段上使用指令ng-minleng= "{number}": <input type="text" ng-minlength="5" /> 3.

AngularJS复习------表单验证

在AngularJS中能够将HTML5表单验证功能同自己的验证指令结合起来使用,这里介绍使用的核心功能. 使用表单验证,首先要确保表单的每个控件都有name属性 如果想要屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加novalidate标记. 必填项:只需要在输入字段元素上添加HTML5标记 required即可 最小长度:在输入字段上使用AngularJS指令ng-minlength="{number}" 最大长度:在输入字段上使用AngularJS指令ng-maxlength

java 表单验证

1.思路:通过表单选择器,表单属性过滤器提取每个表单提交的值,进行验证 2.实现:javascript通过 onSubmit()事件,判断,返回值false不提交,返回true提交,jquery通过submit()事件 3.表单验证常用的方法和事件 a:事件 onblur 失去焦点, onfocus获得焦点 b:方法 blur() 移开焦点触发方法参数 focus() 在文本域中设置焦点 触发方法参数 select()选取文本域中的内容触发方法参数 4.正则表达式: a:定义 var reg =

struts2官方 中文教程 系列十一:使用XML进行表单验证

在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让您可以内置到Struts 2框架的验证器. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列十一:使用XML进行表单验证  即 http://www.cnblogs.com/linghaoxinpian/p/6938720.html 下载本章节代码 为了使用户能够编辑存储在Person对

angularjs中的表单验证

angular对html原生的form做了封装,增加了很多验证功能 1.代码结构 <form name="signup_form" novalidate ng-submit="signupForm()"> <div> <label>用户名</label> <input type="text" placeholder="Name" name="name"

第一篇,js表单验证模板

下面是对于一个email的表单验证的基本模板<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <style type="text/css" > .init{ border: 1px solid black; font-weight: bold; } .right{ border: 1px solid green; f