数据类型,间接上插件达成代码了

2019-07-15 作者:小鱼儿主页高手论坛   |   浏览(80)

本文实例讲述了jQuery解析Json的方法。分享给大家供大家参考,具体如下:

一、焦点状态
  焦点状态是通过伪类“:focus”来实现。Bootstrap框架中表单控件的焦点状态删除了outline的默认样式,重新添加阴影效果。

本文实例讲述了jquery实现表单验证代码。分享给大家供大家参考。具体如下:
运行效果截图如下:

学习目录

前言

<form role="form" class="form-horizontal">
 <div class="form-group">
 <div class="col-xs-6">
 <input class="form-control input-lg" type="text" placeholder="不是焦点状态下效果">
 </div>
 <div class="col-xs-6">
 <input class="form-control input-lg" type="text" placeholder="焦点点状态下效果">
 </div>
 </div>
</form>

图片 1

一、数据类型

在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换、JSON数据的解析是关键。

 

具体代码如下:

数据类型

先明确2个概念例如:

 图片 2

直接上插件实现代码了,围绕代码进行讲解比较容易点:

二、操作符

JSON字符串:

二、禁用状态
  Bootstrap框架的表单控件的禁用状态和普通的表单禁用状态实现方法是一样的,在相应的表单控件上添加属性“disabled”。

/*
描述:基于jquery的表单验证插件。
*/

(function ($) {
 $.fn.checkForm = function (options) {
  var root = this; //将当前应用对象存入root

  var isok = false; //控制表单提交的开关

  var pwd1; //密码存储

  var defaults = {
   //图片路径
   img_error: "img/error.gif",
   img_success: "img/success.gif",

   //提示信息
   tips_success: '', //验证成功时的提示信息,默认为空
   tips_required: '不能为空',
   tips_email: '邮箱地址格式有误',
   tips_num: '请填写数字',
   tips_chinese: '请填写中文',
   tips_mobile: '手机号码格式有误',
   tips_idcard: '身份证号码格式有误',
   tips_pwdequal: '两次密码不一致',

   //正则
   reg_email: /^w @[a-zA-Z0-9] .[a-zA-Z]{2,4}$/i, //验证邮箱
   reg_num: /^d $/,         //验证数字
   reg_chinese: /^[u4E00-u9FA5] $/,     //验证中文
   reg_mobile: /^1[3458]{1}[0-9]{9}$/,    //验证手机
   reg_idcard: /^d{14}d{3}?w$/      //验证身份证
  };

  //不为空则合并参数
  if(options)
   $.extend(defaults, options);

  //获取(文本框,密码框,多行文本框),当失去焦点时,对其进行数据验证
  $(":text,:password,textarea", root).each(function () {
   $(this).blur(function () {
    var _validate = $(this).attr("check"); //获取check属性的值
    if (_validate) {
     var arr = _validate.split(' '); //用空格将其拆分成数组
     for (var i = 0; i < arr.length; i  ) {
      //逐个进行验证,不通过跳出返回false,通过则继续
      if (!check($(this), arr[i], $(this).val()))
       return false;
      else
       continue;
     }
    }
   })
  })

  //表单提交时执行验证,与上面的方法基本相同,只不过是在表单提交时触发
  function _onSubmit() {
   isok = true;
   $(":text,:password,textarea", root).each(function () {
    var _validate = $(this).attr("check");
    if (_validate) {
     var arr = _validate.split(' ');
     for (var i = 0; i < arr.length; i  ) {
      if (!check($(this), arr[i], $(this).val())) {
       isok = false; //验证不通过阻止表单提交,开关false
       return; //跳出
      }
     }
    }
   });
  }

  //判断当前对象是否为表单,如果是表单,则提交时要进行验证
  if (root.is("form")) {
   root.submit(function () {
    _onSubmit();
    return isok;
   })
  }


  //验证方法
  var check = function (obj, _match, _val) {
       //根据验证情况,显示相应提示信息,返回相应的值
   switch (_match) {
    case 'required':
     return _val ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_required, false);
    case 'email':
     return chk(_val, defaults.reg_email) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_email, false);
    case 'num':
     return chk(_val, defaults.reg_num) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_num, false);
    case 'chinese':
     return chk(_val, defaults.reg_chinese) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_chinese, false);
    case 'mobile':
     return chk(_val, defaults.reg_mobile) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_mobile, false);
    case 'idcard':
     return chk(_val, defaults.reg_idcard) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_idcard, false);
    case 'pwd1':
     pwd1 = _val; //实时获取存储pwd1值
     return true;
    case 'pwd2':
     return pwdEqual(_val, pwd1) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_pwdequal, false);
    default:
     return true;
   }
  }


  //判断两次密码是否一致(返回bool值)
  var pwdEqual = function(val1, val2) {
   return val1 == val2 ? true : false;
  }


  //正则匹配(返回bool值)
  var chk = function (str, reg) {
   return reg.test(str);
  }

  //显示信息
  var showMsg = function (obj, msg, mark) {
   $(obj).next("#errormsg").remove();//先清除
   var _html = ""   msg   "";
   if (mark)
    _html = ""   msg   "";
   $(obj).after(_html);//再添加
   return mark;
  }
 }
})(jQuery);

递增和递减操作符:

复制代码 代码如下:

<form role="form">
 <input class="form-control input-lg" id="disabledInput" type="text" placeholder="表单已被禁用,不可输入" disabled>
 <fieldset disabled>
 <div class="form-group">
 <label for="disabledTextInput">禁用的输入框</label>
 <input type="text" id="disabledTextInput" class="form-control" placeholder="禁止输入">
 </div>
 <div class="form-group">
 <label for="disabledSelect">禁用的下拉框</label>
 <select id="disabledSelect" class="form-control">
 <option>不可选择</option>
 </select>
 </div>
 <div class="checkbox">
 <label>
 <input type="checkbox"> 无法选择
 </label>
 </div>
 <button type="submit" class="btn btn-primary">提交</button>
 </fieldset>
</form>

  

位操作符:
布尔操作符:
加性操作符:
相等操作符

var str1 = '{ "name": "deyuyi", "sex": "man" }';

图片 3 

先来说一说实现原理:

三、语句
for-in语句
label语句

JSON对象:

三、验证状态
  在制作表单时,不免要做表单验证。同样也需要提供验证状态样式,在Bootstrap框架中同样提供这几种效果。
  1、.has-warning:警告状态(黄色)
  2、.has-error:错误状态(红色)
  3、.has-success:成功状态(绿色)
  使用的时候只需要在form-group容器上对应添加状态类名

       首先定义好正则,和相应的提示信息,

一、数据类型

复制代码 代码如下:

<form role="form">
 <div class="form-group has-success">
 <label class="control-label" for="inputSuccess1">成功状态</label>
 <input type="text" class="form-control" id="inputSuccess1" placeholder="成功状态" >
 </div>
 <div class="form-group has-warning">
 <label class="control-label" for="inputWarning1">警告状态</label>
 <input type="text" class="form-control" id="inputWarning1" placeholder="警告状态">
 </div>
 <div class="form-group has-error">
 <label class="control-label" for="inputError1">错误状态</label>
 <input type="text" class="form-control" id="inputError1" placeholder="错误状态">
 </div>
</form>

  加上自定义check属性,

数据类型

var str2 = { "name": "deluyi", "sex": "man" };

图片 4

  然后获取check属性的值,多个值用空格分开。利用split()将其拆分为数组,在逐个调用check()方法进行验证。

基本数据类型(五种)

可以简单这样理解:

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

  之后通过验证的返回值来确定显示的信息。

Undefined
Null
Boolean
Number
String

JSON对象是直接可以使用JQuery操作的格式,如C#中可以用对象(类名)点出属性(方法)一样;

以上就是针对Bootstrap表单控件状态的详细介绍,之后还有更多内容会不断更新,希望大家继续关注。

这里有两个验证是比较特别的,就是:

复杂数据类型(一种)

JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用,除非你只想alert()他;

您可能感兴趣的文章:

  • BootStrap表单控件之复选框checkbox和单选择按钮radio
  • Bootstrap中表单控件状态(验证状态)
  • Bootstrap所支持的表单控件实例详解
  • 全面解析Bootstrap表单使用方法(表单控件)
  • Bootstrap复选框和单选按钮美化插件(推荐)
  • BootStrap 表单控件之单选按钮水平排列

1.验证是否为空 (required)

Object
Undefined:只有一个值undefined(定义了没有赋值)。

一、JSON字符串转换为JSON对象

2.两次密码是否一致 (pwd2)

例:

要使用上面的str1,必须使用下面的方法先转化为JSON对象:

这两个都没有用到正则,因为根本就用不上。 两次密码是否一致 ,单独写了个方法 pwdEqual();

 

A:eval函数

插件里的验证正则我只写了几个 ,如果不够用可以自行扩展添加。

var str;alert(str);//undefined

eval函数可以直接将本质符合或者近似符合JSON格式的字符串转换为JSON对象,使用方式如:

扩展只需3步:

注意:如果没有用var申明,直接使用会报异常( ... is not defined)。

eval('(' str ')'); //其中str就是满足本标题描述的字符串

1.添加正则,

建议:每次var声明都赋初始值,可以减少很多意外情况。

//由JSON字符串转换为JSON对象
var str='{ "name": "John" }';
var obj = eval('('   str   ')'); 
alert( obj.name);
var str2="{ 'name': 'John' }";
var obj2 = eval('('   str2   ')'); 
alert( obj2.name);
var str3="{ name: 'John' }";
var obj3 = eval('('   str3   ')'); 
alert( obj3.name);

2.添加相应提示信息,

如:

以上均会输出结果“john”。

3.check()方法中添加相应 case 处理

 

Eval方式可以转换以下标准和非标准格式字符串:

 图片 5

var str;var str2="张三";str = str str2;alert(str);//并不是我们意料中的“张三”

var str="{ 'name': 'John' }";
var str2='{ "name": "John" }';
var str3="{ name: 'John' }";

插件使用说明:

Null:略

参见本例下载包中:JqueryDemo1.html

  1.给表单下要进行验证的文本框,密码框 ,多行文本框加上自定义check属性

Boolean:只有两个字面值: true 和 false。

B:parseJSON函数

  2.多个格式验证用空格间隔,如(同时验证必填和邮箱): check="required email"

任何数据类型通过Boolean()函数都可以转成Boolean类型。

另一种将标准字符串转换为JSON对象的函数是parseJSON(),使用方式如jQuery.parseJSON(str)//其中str就是满足本标题描述的字符串

  3.如果要验证两次密码是否一致,则pwd1和pwd2一起使用,如下图:

String:非空字符=>true     空字符=>false
Number:任何非零=>true   0和NaN=>false
Object:任何对象=>true      null=>false
Undefined                        undefined=>false

//由JSON字符串转换为JSON对象
var str='{ "name": "John" }';
var obj = jQuery.parseJSON(str)
alert("1"  obj.name);

pwd1存储第一次输入的值,pwd2存储第二次输入的值,如果你只用pwd1还好,但如果只用了pwd2,则验证是始终无法通过的。

如:

以上均会输出结果“john”。

下面给出DEMO示例代码:

 

此种方式仅支持标准格式:var str='{ "name": "John" }';

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>表单验证插件</title>
</head>
<body>
 <form id="myform" method="post" action="success.html">
  <ul>
   <li>
   邮箱:<input type="text" name="email" check="required email" />
   </li>
   <li>
   密码:<input type="password" check="required pwd1" />
   </li>
   <li>
   确认密码:<input type="password" check="required pwd2" />
   </li>
   <li>
   手机:<input type="text" name="num" check="required mobile" />
   </li>
   <li>
   数字:<input type="text" name="num" check="required num" />
   </li>
   <li>
   地址:<textarea cols="5" rows="5" check="required"></textarea>
   </li>
   <li>
   不加check验证的文本框:<input type="text" name="num" />
   </li>
  </ul>
  <input type="submit" value="提交" />
 </form>
 <script src="js/jquery-1.4.4.min.js" type="text/javascript"></script>
 <script src="js/jquery.similar.checkForm.js" type="text/javascript"></script>
 <script type="text/javascript">
  $("#myform").checkForm();
 </script>
</body>
</html>

var str = Boolean(NaN);var str2 = Boolean("张三");var str3 = Boolean(undefined);alert(str " " str2 " " str3);

参见本例下载包中:JqueryDemo2.html

示例效果图片:

既然如此,我们在使用if语句的时候会自动执行相应的 Boolean 转换。

C:JSON.parse函数

图片 6

if (str) {
  //str只要是非空字符、任何非零数字、任何非null对象 都是true
  //str只要是空字符、0、NaN、null、undefined 都是false
  //这样就省去了 我们一个个的判断了
  alert("true");
}

还有一种将标准字符串转换为JSON对象的函数是JSON.parse(),使用方式如JSON.parse(str)//其中str就是满足本标题描述的字符串

示例代码,成功提交是会跳转到success.html页面的,因此你要自己创建个success.html,里面可以什么都不写。

 String:略

var str = '{ "name": "mady", "age": "24" }';
var obj = JSON.parse(str);
alert(obj.name);

但是,只要有一个验证不通过,就不会成功跳转。

二、操作符

以上均会输出结果“john”。

另外,你或许还需要2张图片:

递增和递减操作符:

本文由小鱼儿玄机30码发布于小鱼儿主页高手论坛,转载请注明出处:数据类型,间接上插件达成代码了

关键词: 小鱼儿玄机30码