在做M站时比较纠结的是表单验证,不像pc端,移动端的验证要求插件更小更轻量,更加灵活,说不定是冒气泡的报错提示?!

介绍一款好用的移动端的表单验证插件:jQuery-mobilevalidate:

代码写的简洁一点吧,方便查看,基本结构:

<form class="basic_form" method="" id="form">
   <ul class="info_list">
         <li>
             <label for="username"><span>*</span>姓名</label>
             <input type="text" class="name" placeholder="请输入" maxlength="6" data-required="true" data-descriptions="username" data-describedby="username-description" name="username" id="username">

//必须项,自定义描述,name值提交

//data-required="true"必填项

// data-describedby="username-description"错误描述信息标记

// data-descriptions="username" 错误描述信息内容
             <div id="username-description"></div>

//id表明了错误信息提示的位置
        </li>
        <li class="select_li" id="sex_li">
               <label for="sex"><span>*</span>性别</label>
               <input type="text" class="padding_right" readonly placeholder="男" id="sex">
               <input type="hidden" value="1" class="gender" name="sex">

//隐藏域提交

</li>
       <li class="select_li" id="address_li">
               <label><span>*</span>现居城市</label>
               <input type="text" class="padding_right address" readonly name="address" placeholder="省份/城市" data-required="true" data-descriptions="address" data-describedby="address-description">
               <div id="address-description"></div>

//id表明了错误信息提示的位置
               <input type="hidden" name="province" id="province">
               <input type="hidden" name="city" id="city">
        </li>
        <li class="phone">
               <label><span>*</span>手机号</label>
               <span class="def_num">+86</span>
               <input type="text" class="phone1" readonly placeholder="" class="">
               <input type="text" class="phone2" name="mobile" placeholder="请输入" class="" maxlength="11" data-validate="phone" data-describedby="phone-description">

//自定义手机验证格式
               <div id="phone-description"></div>

//id表明了错误信息提示的位置
    </li>
    <li>
              <label for="e-mail">邮箱</label>
              <input type="text" class="name" data-validate="email" placeholder="请输入" maxlength="30" name="email" data-describedby="email-description" id="e-mail">
              <div id="email-description"></div>

//id表明了错误信息提示的位置
    </li>
</ul>
 <div class="btns clearfix">
             <input type="reset" value="取消" class="cancel">
             <input type="submit" value="确定" class="confirm">
</div>
</form>

js基本结构

$.mvalidateExtend({
     phone: {
     required: true,
     pattern: /^0?1[3|4|5|8][0-9]\d{8}$/,
     descriptions: {
     required: '<div class="field-invalidmsg">*请输入手机号码</div>',
     pattern: '<div class="field-invalidmsg">*您输入的手机号码格式不正确</div>',
     valid: '<div></div>'
      }
   },
     password: {
     required: true,
     pattern: /^[a-zA-Z0-9]{6,20}$/,
     descriptions: {
     required: '<div class="field-invalidmsg">*请输入密码</div>',
     pattern: '<div class="field-invalidmsg">*您输入的密码格式不正确</div>',
     valid: '<div></div>'
    }
 }
});

$("#item_form").mvalidate({
type: 2,

// 提示错误类型,可以自定义
onKeyup: true,
sendForm: true,
firstInvalidFocus: true,

//自动获取第一个没有通过验证的input
valid: function(event, options) {
//点击提交按钮时,表单通过验证触发函数
//alert("验证通过!接下来可以做你想做的事情啦!");
var url = $('#item_form').attr("action");
proPublic.postAjax(url, $('#item_form').serialize());
event.preventDefault();
},
invalid: function(event, status, options) {
//点击提交按钮时,表单未通过验证触发函数
},
eachField: function(event, status, options) {
//点击提交按钮时,表单每个输入域触发这个函数 this 执向当前表单输入域,是jquery对象
},
eachValidField: function(val) {
return false;
},
eachInvalidField: function(event, status, options) {},
conditional: {
   pwd2: function(val, options) {
     $("#confirmpwd2").trigger("keyup." + options.namespace);
     return true;
 },
  confirmpwd2: function(val) {
    var flag;
    return (val == $("#pwd2").val()) ? true : false;
 },

//两次密码输入
},
descriptions: {
item: {
required: '<div class="field-invalidmsg">*请输入项目名称</div>',
valid: '<div class="field-validmsg"></div>'
},
join: {
required: '<div class="field-invalidmsg">*请输入参与身份</div>',
valid: '<div class="field-validmsg"></div>'
},
time: {
required: '<div class="field-invalidmsg">*请选择时间</div>',
valid: '<div class="field-validmsg"></div>'
}

}

//内容错误提示的内容
});

====禁止表单提交================

main.stopDefault = function(event) {
        var event = event || window.event;
        //阻止默认浏览器动作(W3C)
        if (event && event.preventDefault) {
            event.preventDefault();
        } else {
            //IE中阻止函数器默认动作的方式
            window.event.returnValue = false;
            return false;
        }

};

jQuery-mobilevalidate使用 的一些心得,小小总结的更多相关文章

  1. JQuery的开发与使用心得

    关于jQuery的 入门使用jQuery可以很容易或具有挑战性的,这取决于你如何使用JavaScript,HTML,CSS进行开发和编程. 要知道一件重要的事情是,jQuery是只是一个JavaScr ...

  2. DataTable 删除数据后重新加载

    DataTable 删除数据后重新加载 一.总结 一句话总结: 判断datatable是否被datatable初始化或者是否执行了datatable销毁函数,如果没有,就销毁它 if ($('#dat ...

  3. jquery validate学习心得

    据说,javascript最初的由来就是为了解决表单的验证问题,当然现在的js已经能够用来做各种各样炫酷的效果,不过表单验证一直以来都是js很重要的一个用途(在博客园第一篇博客,不知道说些什么开头~~ ...

  4. Jquery Mobile转场特效之slide | 小小iPhone开发

    Jquery Mobile转场特效之slide | 小小iPhone开发 2012 Jquery Mobile转场特效之slide 作者:小小   发布:2012-12-12 14:03   分类:j ...

  5. jQuery修炼心得-DOM节点的插入

    1. 内部插入append()与appendTo() append:这个操作与对指定的元素执行原生的appendChild方法,将它们添加到文档中的情况类似. appendTo:实际上,使用这个方法是 ...

  6. jquery.tmplate使用心得

    jquery.tmplate使用心得 jquery.tmpl.js,是与jquey共同使用的html模板插件.该插件可通过简单的语法将数据放入到html模板中,可以很好的将数据渲染到页面上.该插件在本 ...

  7. JQuery纵向下拉菜单实现心得

    jquery库给我们带来了许多便利,不愧是轻量级的DOM框架,在前面的博文中小编分别对jquery的基础知识以及jquery的一些小demo有一系列的简单介绍,期待各位小伙伴的指导.使用jquery实 ...

  8. django rest framework 小小心得

    這篇主要是針對於個人目前學習django rest framework的一些小小心得,在開發django而言,想要撰寫restful api,是有幾個套件可以選擇的 rest framework ta ...

  9. jQuery Mockjax插件使用心得

    最近指导前端攻城狮在后台代码没有完成前测试自己写的后台代码,第一个版本是让他直接创建一个data.json静态数据,然后再ajax调用,缺点非常明显,首先需要localhost的支持,其次是能测的功能 ...

  10. (原创)jQuery Media Plugin-jQuery的网页媒体播放器插件的使用心得

    jQuery Media Plugin是一款基于jQuery的网页媒体播放器插件,它支持大部分的网络多媒体播放器和多媒体格式,比如:Flash, Windows Media Player, Real ...

随机推荐

  1. 如何在python中把两个列表的各项分别合并为列表

    [ [a,b] for a,b in zip(list1,list2)] 生成一个以列表list1,list2各项合并列表为元素的列表

  2. python六十八课——网络编程之UDP协议

    1.1 概述 UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接.简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到 ...

  3. tomcat的webapps目录中的abc.war

    1  在tomcat的webapps目录中,会有类似abc.war类型的文件,在tomcat启动时会自动解压为abc目录. 2  如果tomcat在运行中,不要直接删除abc.war文件,删除后,ab ...

  4. [CQOI2018]解锁屏幕

    嘟嘟嘟 这题感觉真的很简单-- \(O(n ^ 2 logn)\)的做法特别好理解,但得开O2. 看数据范围,肯定是状压dp.但刚开始我没想通状压啥,因为点与点之间还有顺序问题.但后来发现这个顺序是子 ...

  5. 联想Y700安装显卡驱动和CUDA8.0

    一显卡驱动安装 1 安装驱动安装软件 2 自动检测下载对应版本驱动 3下载完成后,点击开始,解压出来临时安装文件 由于是临时安装文件,退出就会关闭 4所以在没有关闭情况下,打开重新打开一次setup, ...

  6. (1) 安卓导入mqtt包基本通信

    参考资料:http://blog.csdn.net/qq_17250009/article/details/52774472 MQTT官网:http://mqtt.org/ MQTT介绍:http:/ ...

  7. CDB与PDB之间的切换方法

    Oracle 12c 开始支持 PLUGGABLE DATABASE,并且提供了一个方法在CDB和PDB之间切换. 1. 使用 show pdbs 可以确认当前有哪些PDB? SQL> show ...

  8. Python脱产8期 Day11 2019/4/25

    一 字符串比较 1.字符串比较:字符串对应的ascii进行比较 2.多个字符的字符串进行比较:从前往后逐个字符进行比较,一旦哪个位置的字符出现了大小关系就结束比较. 二 形参与实参 1.参数介绍: 函 ...

  9. Luogu P4205 [NOI2005]智慧珠游戏

    国内少有的可以练习神仙算法--DLX的好题怎么可以被爆搜埋没呢? 看到这题没有DLX的题解所以写一篇,不过貌似我实现的太弱(构图太慢)所以速度上不是很快. 下面开始讲题,但请保证你要先学会DLX.(d ...

  10. 【Qt】Qt Quick 之 QML 与 C++ 混合编程详解

    Qt Quick 之 QML 与 C++ 混合编程详解 - CSDN博客   专栏:Qt Quick简明教程 - CSDN博客   .