text: /**
   * 表单验证
   */
  ;(function ($) {
      "use strict";
  
      var obj;
      var checkCan = new Array();
      var patterns = new Object();
      //匹配ip地址
      patterns.Ip = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
      //匹配邮件地址
      patterns.Email = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
      //匹配日期格式2008-01-31，但不匹配2008-13-00
      patterns.Date = /^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/;
      /*匹配时间格式00:15:39，但不匹配24:60:00，下面使用RegExp对象的构造方法
       来创建RegExp对象实例，注意正则表达式模式文本中的“\”要写成“\\”*/
      patterns.Time = new RegExp("^([0-1]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$");
      //匹配整形数字
      patterns.Num = /^[0-9]*$/;
      //匹配浮点数字
      patterns.FloatNum = /^\d+(\.\d+)?$/;
      //匹配日期加时间格式
      patterns.DateAndTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9](:[0-5][0-9])?$/;
      //匹配手机号码
      patterns.Phone = /^(1[3|4|5|8])[0-9]{9}$/;
      //匹配姓名
      patterns.Chinese=/^[\u4e00-\u9fa5]{2,8}$/;
      //qq号码
      patterns.QQ=new RegExp("^[1-9]\\d{4,10}$");
      patterns.Telephone=/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
      //身份证正则表达式(15位)
      patterns.isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
      //身份证正则表达式(18位)
      patterns.isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
  
  
      var bind_form_check=function(){
          $('.form_check').after('<div class=" show_info" ></div>');
          $('.form_check').click(function () {
          })
          $('.form_check').focus(function () {
          })
          $('.form_check').blur(function () {
              obj = $(this);
              var type = obj.attr('check-type');
              //验证内容的长度是否正确
              var checkLength = checkInputLength();
              if(checkLength.status==0){
                  showInfo(checkLength.info,checkLength.status);
                  return;
              }
              //正则匹配
              var check = eval('check' + type + '()');
              //alert(obj.attr('check-url'));
              if(!obj.attr('check-url')){
                  showInfo(check['info'],check['status']);
              }
          })
          $('.form_check').change(function () {
              $(this).blur();
          })
          /**
           * 提交时检测数据
           */
          $(":submit").click(function (e) {
              var canDubmit = true;
              for (var key in checkCan) {
                  canDubmit = canDubmit & checkCan[key];
              }
              if (!canDubmit) {
                  toast.error('请填写完整且正确的信息后再提交！')
                  e.preventDefault();
                  return false;
              }
          })
      }
      /**
       * 检查是否为空
       * @returns {boolean}
       */
      var checkEmpty = function () {
          if (obj.val().length == 0) {
              return false;
          } else {
              return true;
          }
      }
      /**
       * 检查长度是否符合要求
       * @returns {number}
       */
      var checkInputLength = function () {
          var str = obj.val().replace(/\s+/g, "");
          if (str.length == 0) {
              var res = {status: 0, info: '不能为空'};
              return res;
          } else {
              if (typeof (obj.attr('check-length')) != 'undefined') {
                  var strs = new Array(); //定义一数组
                  strs = obj.attr('check-length').split(","); //字符分割
                  if (strs[1]) {
                      if(strs[1]=='*'){
                          if (str.length < strs[0]) {//1,*（设置最小值）
                              var res = {status: 0, info: '字数不能少于'+strs[0]+'个'};
                              return res;
                          }
                      }else if (strs[1] < str.length || str.length < strs[0]) {
                              var res = {status: 0, info: '要求字数为'+strs[0]+'-'+strs[1]+'个'};
                              return res;
                      }
                  }else {
                      if (strs[0] < str.length) {//单个值（最大值）
                          var res = {status: 0, info: '字数不能少于'+strs[0]+'个'};
                          return res;
                      }
                  }
              }
              var res = {status: 1, info: ''};
              return res;
          }
      }
      /**
       * 验证文本框
       * @returns {{status: number, info: string}}
       */
      var checkText = function () {
          var res = {status: 1, info: ''}
          return res;
      }
  
      /**zzl
       * 验证姓名输入框
       * @returns {{status: number, info: string}}
       */
      var checkChinese = function () {
          var str=obj.val();
          if(patterns['Chinese'].test(str)){
              var res = {status: 1, info: ''}
          }
          else{
              var res = {status: 0, info: '请输入2-8个汉字的姓名'}
          }
          return res;
      }
  
      /**zzl
       * 验证QQ号
       * @returns {{status: number, info: string}}
       */
      var checkQQ = function () {
          var str=obj.val();
          if(patterns['QQ'].test(str)){
              var res = {status: 1, info: ''}
          }
          else{
              var res = {status: 0, info: '请输入正确qq号！'}
          }
          return res;
      }
  
      /**zzl
       * 验证邮箱
       * @returns {{status: number, info: string}}
       */
      var checkEmail = function () {
          var str=obj.val();
          if(patterns['Email'].test(str)){
              var res = {status: 1, info: ''}
          }
          else{
              var res = {status: 0, info: '请输入正确Email地址！'}
          }
          return res;
      }
  
      /**zzl
       * 验证身份证号
       * @returns {{status: number, info: string}}
       */
      var checkIDCard = function () {
          var str=obj.val();
          if(patterns['isIDCard1'].test(str)||patterns['isIDCard2'].test(str)){
              var res = {status: 1, info: ''}
          }
          else{
              var res = {status: 0, info: '请输入正确身份证号！'}
          }
          return res;
      }
  
      /**
       * 验证日期
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkDate = function () {
          var str = obj.val();
          if (patterns['Date'].test(str)) {
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写正确的格式！'}
          }
          return res;
      }
      /**
       * 验证日期加时间
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkDateAndTime = function () {
          var str = obj.val();
          if (patterns['DateAndTime'].test(str)) {
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写正确的格式！'}
          }
          return res;
      }
      /**
       * 验证数字
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkNum = function () {
          var str = obj.val();
          if (patterns['Num'].test(parseInt(str))) {
              if (typeof (obj.attr('check-value')) != 'undefined') {
                  var strs = new Array(); //定义一数组
                  strs = obj.attr('check-value').split(","); //字符分割
                  str = parseInt(obj.val());
                  if (strs[1]) {
                      if(strs[1] == '*'){
                          if ( str < parseInt(strs[0])) {
                              var res = {status: 0, info: '数字至少为' + parseInt(strs[0]) }
                              return res;
                          }
                      }
                      if (parseInt(strs[1]) < str || str < parseInt(strs[0])) {
                          var res = {status: 0, info: '数字范围在' + strs + '内'}
                          return res;
                      }
                  }
                  else {
                      if (parseInt(strs[0]) < str) {
                          var res = {status: 0, info: '数字范围在' + strs + '内'}
                          return res;
                      }
                  }
              }
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写数字！'}
          }
          return res;
      }
  
      /**zzl
       * 验证整形数字
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkIntNum = function () {
          var str = obj.val();
          if(parseInt(str)!=str){
              var res = {status: 0, info: '请填写整数数字！'}
              return res;
          }
          if (patterns['Num'].test(parseInt(str))) {
              if (typeof (obj.attr('check-value')) != 'undefined') {
                  var strs = new Array(); //定义一数组
                  strs = obj.attr('check-value').split(","); //字符分割
                  str = parseInt(obj.val());
                  if (strs[1]) {
                      if(strs[1] == '*'){
                          if ( str < parseInt(strs[0])) {
                              var res = {status: 0, info: '数字至少为' + parseInt(strs[0]) }
                              return res;
                          }
                      }
                      if (parseInt(strs[1]) < str || str < parseInt(strs[0])) {
                          var res = {status: 0, info: '数字范围在' + strs + '内'}
                          return res;
                      }
                  }
                  else {
                      if (parseInt(strs[0]) < str) {
                          var res = {status: 0, info: '数字范围在' + strs + '内'}
                          return res;
                      }
                  }
              }
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写整数数字！'}
          }
          return res;
      }
  
      /**zzl
       * 验证浮点型数字
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkFloatNum = function () {
          var str = obj.val();
          if(parseFloat(str)!=str){
              var res = {status: 0, info: '请填写浮点型数字！'}
              return res;
          }
          if (patterns['FloatNum'].test(parseFloat(str))) {
              if (typeof (obj.attr('check-value')) != 'undefined') {
                  var strs = new Array(); //定义一数组
                  strs = obj.attr('check-value').split(","); //字符分割
                  str = parseFloat(obj.val());
                  if (strs[1]) {
                      if(strs[1] == '*'){
                          if ( str < parseFloat(strs[0])) {
                              var res = {status: 0, info: '数字至少为' + parseFloat(strs[0]) }
                              return res;
                          }
                      }
                      if (parseFloat(strs[1]) < str || str < parseFloat(strs[0])) {
                          var res = {status: 0, info: '数字范围在' + strs + '内'}
                          return res;
                      }
                  }
                  else {
                      if (parseFloat(strs[0]) < str) {
                          var res = {status: 0, info: '数字范围在' + strs + '内'}
                          return res;
                      }
                  }
              }
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写整数数字！'}
          }
          return res;
      }
  
      /**zzl
       * 验证手机号码或固定电话
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkPhoneOrTelephone = function () {
          var str = obj.val();
          if (patterns['Phone'].test(parseInt(str))||patterns['Telephone'].test(str)) {
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写手机号码或固定电话！'}
          }
          return res;
      }
  
      /**
       * 验证手机
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkPhone = function () {
          var str = obj.val();
          if (patterns['Phone'].test(parseInt(str))) {
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写手机号码！'}
          }
          return res;
      }
      /**
       * 验证固定电话
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkTelephone = function () {
          var str = obj.val();
          if (patterns['Telephone'].test(str)) {
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请填写固定电话号码！'}
          }
          return res;
      }
  
  
      /**
       * 验证下拉菜单
       * @returns {{status: number, info: string}|{status: number, info: string}}
       */
      var checkSelect = function () {
          var str = obj.val();
          if(str==0){
              var can_empty=obj.attr('can-empty');
              if(can_empty==1){
                  check_form.remove();
                  checkCan[obj.attr('name')] = 1;
                  return;
              }
          }
          if (str != 0 && str != '' && typeof (str) != 'undefined') {
              var res = {status: 1, info: ''}
          }
          else {
              var res = {status: 0, info: '请选择！'}
          }
          return res;
      }
  
      /**
       * 验证传入的正则表达式
       * 例：reg-exp="^[0-9]*\/[0-9]*\/[0-9]*$"
       */
      var checkRegExps=function(){
          var regExps=obj.attr('reg-exp');
          if(typeof(regExps)=="undefined"){
              checkCan[obj.attr('name')] = 1;
              return;
          }
          var str=obj.val();
          regExps=new RegExp(regExps);
          if(regExps.test(str)){
              var res={status:1,info:''}
          }
          else{
              var errorInfo=obj.attr('error-info')||"请按正确格式填写！";
              var res = {status: 0, info:errorInfo}
          }
          return res;
      }
  
      var checkUsername = function(){
          var str = obj.val();
          var type = 'username';
          var url = obj.attr('check-url');
          $.post(url,{account:str,type:type},function(res){
              ajaxRerurn(res);
          },'json')
  
      }
      var checkUserEmail = function(){
          var str = obj.val();
          var type = 'email';
          var url = obj.attr('check-url');
          $.post(url,{account:str,type:type},function(res){
              ajaxRerurn(res);
          },'json')
  
      }
  
      var checkUserMobile = function(){
          var str = obj.val();
          var type = 'mobile';
          var url = obj.attr('check-url');
          $.post(url,{account:str,type:type},function(res){
              ajaxRerurn(res);
          },'json')
  
      }
  
      var checkNickname = function(){
          var str = obj.val();
          var url = obj.attr('check-url');
          $.post(url,{nickname:str},function(res){
              ajaxRerurn(res);
          },'json')
  
      }
  
      var ajaxRerurn = function(res){
          if(res.code){
              checkCan[obj.attr('name')] = 1;
              check_form.success(res.msg);
          }else{
              checkCan[obj.attr('name')] = 0;
              check_form.error(res.msg);
          }
      }
  
  
      /**
       * 显示提示信息
       * @param str
       */
      var showInfo = function (str,status) {
  
              check_form.remove();
              if(status == 1 ||  status == true){
                  check_form.success(str);
                  check_form.remove();//如果正确就移除提示消息
              }
              else{
                  check_form.error(str);
              }
      }
      /**zzl
       * 移除提示信息
       *
       */
      var removeInfo = function () {
          var html = '';
          obj.parent().find('.show_info').html(html);
  
      }
  
      /**
       * 显示信息
       * @type {{error: Function, success: Function}}
       */
      var check_form = {
          /**zzl
           * 移除非必填输入框提示消息
           */
          remove:function(){
             // var html = ' <span class="glyphicon form-control-feedback"></span>';
             // obj.parent().find('.glyphicon').replaceWith(html);
              removeInfo();
          },
          error: function (str) {
              //var html = ' <span class="glyphicon glyphicon-remove form-control-feedback"></span>';
              //obj.parent().find('.glyphicon').replaceWith(html);
              //showInfo(str);
              var color,icon,html;
              color = 'red';
              icon = '<i class="icon-remove-sign"></i>'
              html = '<div class="send '+color+'">'+icon+' '+ str + '</div>';
              obj.parent().find('.show_info').html(html);
          },
          success: function (str) {
             // var html = ' <span class="glyphicon glyphicon-ok form-control-feedback"></span>';
              //obj.parent().find('.glyphicon').replaceWith(html);
              //showInfo(str,1);
              var color,icon,html;
              color = 'green';
              icon = '<i class="icon-check-circle"></i>'
              html = '<div class="send '+color+'">'+icon+' '+ str + '</div>';
              obj.parent().find('.show_info').html(html);
          }
      }
  
      // Initialize
      $(document).ready(function(e){
           bind_form_check();
      });
  
  }(jQuery));