• js 表单验证


    使用文档:

    请仔细阅读后使用

    首先要在页面的头部引入三个js 文件:

    <script src="js/jquery-1.12.2.min.js"></script>
    <script src="js/jquery.form.js"></script>
    <script src="js/RExp.js"></script>
    jquery-1.12.2.min.js(这个不用说了)
    jquery.form.js(这个js文件在百度可以下载到)
    RExp.js(这个 js 文件下面会贴出来,有不懂的可以留言咨询,或者加本人QQ172360937讨论)

    页面布局应该这样布:

    <div id='div'>
        <form action="#" id="myform2">
            <ul>
                <li>
                    <input type="text" value=''onkeyup= Pattern(this,/[u4E00-u9FA5]{2,4}/i)>
                    <span></span>
                </li>
                <li>
                    <input type="text" value=''onkeyup= Pattern(this,/[u4E00-u9FA5]{2,4}/i)>
                    <span></span>
                </li>
                <li>
                    <input type="text" value=''onkeyup= Pattern(this,/[u4E00-u9FA5]{2,4}/i)>
                    <span></span>
                </li>
    
                <li>
                    <input type="text" value=''onkeyup= Pattern(this,/[u4E00-u9FA5]{2,4}/i)>
                    <span></span>
                </li>
                <li>
                    <input type="text" value=''onkeyup= Pattern(this,/[u4E00-u9FA5]{2,4}/i)>
                    <span></span>
                </li>
                <li>
                    <select name="" id="">
                        <option value="">11111</option>
                        <option value="">22222</option>
                    </select>
                    <span></span>
                </li>
                <li>
                    <input type="button" value='提交' onclick = 'RExp.Rsubmit(this);BtnSa()'>
                </li>
            </ul>
        </form>

    1*,页面布局:(重要)
      每个表单要单独放到一个 li 里,每个 li 里只允许有一个 span 标签
    2*,事件添加:
      在要验证的表单里写行内 onkeyup 事件传入两个参数 第一个参数是 this【必填】
    第二个参数是此表单的正则表单式【选填】。非空可以不传第二个参数,相对的函数也不用接收参数
    3*,button事件:
      form 表单里的button按钮应该这样写 :

    <input type="button" value='提交' onclick = 'RExp.Rsubmit(this);BtnSa()'>

    不然会直接提交, 事件的写法是固定的,函数的前后顺序不要变,中间不要有空格,先执行第一个再执行第二个,或者可以获取按钮的 id 在页面上添加点击事件但是要保证先执行 RExp.Rsubmit(this) 方法
    4*,提示信息:
      如果提示信息不一样,可以复制一份 Pattern()函数,修改函数名字,修改提示信息即可.
    5*,RExp.Rstyle 函数 :
      就像ajax一样用哪个参数传哪个参数。
    6*,Pattern 函数书写格式:
      1-1:接收两个参数,第一个参数必须写,第二个参数不用就可以不写

    function Pattern(_this,exp){
      RExp.Rstyle({
        'regular':exp,// -- 当前要验证的 input 框的正则表达式
        'trueText':'* 正确', // -- 通过的提示文字
        'falseText':'* 姓名格式不正确', // -- 没有通过的提示文字
        'nullText':'* 姓名不能为空', // -- 为空的提示文字
        'trueColor':'green', // -- 验证通过的提示文字颜色
        'falseColor':'orange', // -- 验证没有通过的提示文字颜色
        'nullColor':'red', // -- 为空时的提示文字颜色
        'This':_this
      });
    }

    7*,提交表单的 ajax 写法:
      BtnSa()函数是提交按钮点击时触发的函数只有表单里的所有验证都通过后RExp.Rtype 才会变为 true,其他情况 RExp.Rtype 都为false

    function BtnSa(){
      if(RExp.Rtype){ // - 验证通过后进来
        $('#myform2').ajaxSubmit({ // - button 按钮对应的form 表单
            url: 'package.json', // - 提交表单的地址
            type: 'get', // - 提交方式
            dataType: 'json', // - 数据格式
            success: function (data) { // - 成功函数
              alert('成功');
            },
            error:function(){ // - 失败函数
              alert('失败');
            }
        });
      }
    }

    8*,不过这一切都是基于 jquery-1.12.2.min.js 和 jquery.form.js

    以下是 RExp.js 代码,(复制到你的 js 文件里,或者单独引入都可以)

    var RExp = {
        // -- 此处动态改为 true 可以进入 ajax 提交form
        Rtype:false,
        // -- 全局 觉定是否提交表单
        Roverall:0,
        //  == 提交按钮的事件
        Rsubmit:function(_this){
                this.Roverall = 0;
                var inputSubmit = _this.form.getElementsByTagName("*");
                for(var i = 0;i<inputSubmit.length-1;i++){
                    if(inputSubmit[i].onkeyup == undefined){
                        this.Roverall ++;
                    }else{
                        inputSubmit[i].onkeyup();
                    }
                }
                if(this.Roverall != inputSubmit.length-1){
                    this.Roverall = 0;
                    this.Rtype = false;
                }else{
                    this.Rtype = true;
                }
        },
        //  == 提示信息样式函数
        Rstyle:function(){
                var Span = arguments[0].This.parentNode.getElementsByTagName('span')[0];
                if(arguments[0].This.value == ''){
                    if(arguments[0].nullText != undefined){
                        this.Rcomm({
                            'span':Span,
                            'Text':arguments[0].nullText,
                            'Color':arguments[0].nullColor
                        });
                    }
                    return;
                }else if(arguments[0].regular == undefined){
                    this.Rcomm({
                        'span':Span,
                        'Text':arguments[0].trueText,
                        'Color':arguments[0].trueColor
                    });
                    this.Roverall ++;
                }
                if(arguments[0].regular != undefined){
                    var type = arguments[0].regular.test(arguments[0].This.value);
                    if(type){
                        if(arguments[0].trueText != undefined){
                            this.Rcomm({
                                'span':Span,
                                'Text':arguments[0].trueText,
                                'Color':arguments[0].trueColor
                            });
                        }
                        this.Roverall ++;
                    }else{
                        if(arguments[0].falseText != undefined){
                            this.Rcomm({
                                'span':Span,
                                'Text':arguments[0].falseText,
                                'Color':arguments[0].falseColor
                            });
                        }
                    }
                }
        },
        // -- 公共方法
        Rcomm:function(){
                arguments[0].span.innerHTML = arguments[0].Text;
                arguments[0].span.style.color = arguments[0].Color;
        }
    }
  • 相关阅读:
    图像处理笔记(十)
    图像处理笔记(九):频率域滤波
    图像处理笔记(八)
    图像处理笔记(七)
    图像处理笔记(六):灰度变换与空间滤波
    分布式
    关于python代码是编译执行还是解释执行
    python中的元类metaclass
    Python的函数参数传递
    递推思想
  • 原文地址:https://www.cnblogs.com/chefweb/p/5961480.html
Copyright © 2020-2023  润新知