您好,欢迎访问一九零五行业门户网

JS仿支付宝input文本输入框放大组件详解

本文主要为大家带来一篇js 仿支付宝input文本输入框放大组件的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。
input输入的时候可以在后边显示数字放大镜
<!doctype html> <html lang="en">  <head>  <meta charset="utf-8">  <title>js 仿支付宝input文本输入框放大组件</title>  <script src="js/jquery.min.js"></script>  <style>   * { margin: 0; padding: 0; border-width: 1px; }   .parentcls {margin:5px 60px 0;}   .js-max-input {border: solid 1px #ffd2b2; position:relative;background: #fffae5;padding: 0 10px 0 10px;font-size:20px;color: #ff4400}   .inputelem4{ width: 300px; height: 36px; border: 1px solid #e0e0e0; padding-left: 10px; line-height: 36px; font-size: 14px; }  </style>  </head>  <body>  <p class="parentcls">   <input type="text" class="inputelem4" autocomplete = "off" maxlength="18"/>  </p>   <script src="js/jq22.js"></script>   <script>    // 初始化    $(function(){    new textmagnifier({     inputelem: '.inputelem4',     align: 'bottom',     splittype: [6,4,4,4]    });    });   </script>  </body> </html>
/**  * js 仿支付宝的文本输入框放大组件  */   function textmagnifier(options) {   this.config = {      inputelem   :  '.inputelem',  // 输入框目标元素   parentcls   :  '.parentcls',  // 目标元素的父类   align    :  'right',   // 对齐方式有 ['top','bottom','left','right']四种 默认为top   splittype   :  [3,4,4],   // 拆分规则   delimiter   :  '-'    // 分隔符可自定义   };   this.cache = {    isflag : false   };   this.init(options);  }  textmagnifier.prototype = {      constructor: textmagnifier,   init: function(options) {   this.config = $.extend(this.config,options || {});   var self = this,    _config = self.config,    _cache = self.cache;      self._bindenv();         },   /*   * 在body后动态添加html内容   * @method _appendhtml   */   _appendhtml: function($this,value) {    var self = this,     _config = self.config,     _cache = self.cache;    var html = '',     $parent = $($this).closest(_config.parentcls);     if($('.js-max-input',$parent).length == 0) {     html += '<p class="js-max-input"></p>';     $($parent).append(html);     }     var value = self._formatstr(value);     $('.js-max-input',$parent).html(value);   },   /*   * 给目标元素定位   * @method _position   * @param target   */   _position: function(target){   var self = this,    _config = self.config;   var elemwidth = $(target).outerwidth(),    elemheight = $(target).outerheight(),    elemparent = $(target).closest(_config.parentcls),    containerheight = $('.js-max-input',elemparent).outerheight();       $(elemparent).css({position:'relative'});      switch(true){        case _config.align == 'top':          $('.js-max-input',elemparent).css({'position':'absolute','top' :-elemheight - containerheight/2,'left':0});     break;        case _config.align == 'left':     $('.js-max-input',elemparent).css({'position':'absolute','top' :0,'left':0});     break;        case _config.align == 'bottom':     $('.js-max-input',elemparent).css({'position':'absolute','top' :elemheight + 4 + 'px','left':0});     break;        case _config.align == 'right':     $('.js-max-input',elemparent).css({'position':'absolute','top' :0,'left':elemwidth + 2 + 'px'});     break;   }   },   /**   * 绑定事件   * @method _bindenv   */   _bindenv: function(){   var self = this,    _config = self.config,    _cache = self.cache;   // 实时监听输入框值的变化   $(_config.inputelem).each(function(index,item){    $(item).keyup(function(e){     var value = $.trim(e.target.value),      parent = $(this).closest(_config.parentcls);     if(value == '') {      self._hide(parent);     }else {      var html = $.trim($('.js-max-input',parent).html());      if(html != '') {       self._show(parent);      }     }     self._appendhtml($(this),value);     self._position($(this));    });    $(item).unbind('focusin');    $(item).bind('focusin',function(){     var parent = $(this).closest(_config.parentcls),      html = $.trim($('.js-max-input',parent).html());     if(html != '') {      self._show(parent);     }    });    $(item).unbind('focusout');    $(item).bind('focusout',function(){     var parent = $(this).closest(_config.parentcls);     self._hide(parent);    });   });   },   /**   * 格式化下   * @method _formatstr   */   _formatstr: function(str){   var self = this,    _config = self.config,    _cache = self.cache;   var count = 0,    output = [];   for(var i = 0, ilen = _config.splittype.length; i < ilen; i++){ var s = str.substr(count,_config.splittype[i]); if(s.length > 0){     output.push(s);    }    count+= _config.splittype[i];   }   return output.join(_config.delimiter);   },   /*   * 显示 放大容器   * @method _show   */   _show: function(parent) {   var self = this,    _config = self.config,    _cache = self.cache;   if(!_cache.isflag) {    $('.js-max-input',parent).show();    _cache.isflag = true;   }   },   /*   * 隐藏 放大容器   * @method hide   * {public}   */   _hide: function(parent) {   var self = this,    _config = self.config,    _cache = self.cache;   if(_cache.isflag) {    $('.js-max-input',parent).hide();    _cache.isflag = false;   }   }  };
效果图
相关推荐:
js 仿支付宝input输入显示数字放大镜
javascript高仿支付宝倒计时页面及代码实现
javascript仿支付宝密码输入框_javascript技巧
以上就是js仿支付宝input文本输入框放大组件详解的详细内容。
其它类似信息

推荐信息