// 录入人名放大效果 2017-11-9 zp $(function () { new TextMagnifier({ inputElem: "input[name='guestpassport']", parentCls: ".psin-input", align: 'top' }); }); function TextMagnifier(options) { this.config = { inputElem: '.inputElem', // 输入框目标元素 parentCls: '.parentCls', // 目标元素的父类 align: 'right' // 对齐方式有 ['top','bottom','left','right']四种 默认为top }; 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 += '
'; $($parent).append(html); } //var value = self._formatStr(value); //获取对应的FullName var NameValue = $($this).closest("div.train-psinfo-div").find("input[name='guestName']").val(); var sBox = "
" + "
Document No.
" + "
" + value + "
" + "
" + "
Your full name
" + "
"+NameValue+"
" + "
"; $('.js-max-input', $parent).html(sBox); }, /* * 给目标元素定位 * @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 * 2 - 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); self._appendHTML($(this), value); self._position($(this)); if (value == '') { self._hide(parent); } else { var html = $.trim($('.js-max-input', parent).html()); if (html != '') { self._show(parent); } } }); $(item).unbind('focusin'); $(item).bind('focusin', function () { self._appendHTML($(this), $(this).val()); self._position($(this)); 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 _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-max-input').remove(); } } };