对文本框中输入的内容放大显示和格式化

  在最近做的项目中,发现用户在输入手机号、身份证或者银行卡这些重要的数据的时候,文本框显示的文字不是非常大,也不是非常明显的显示给用户。

  往往这些重要数据用户都需要核对好几次,在确保正确无误的时候才敢点击保存,这样总会浪费一点时间,对用户的体验也不是非常友好,如果我们能在用户输入框的上面对输入的内容进行放大、颜色突出并且按照不同的分隔显示,是不是这样更能便于用户快速的核实数据呢。

  于是自己利用业务时间就动手封装了一个小插件:

  第一步:创建一个样式表sytle.css

 1 @charset "utf-8";
 2 /*基本框架CSS*/
 3 body, ul, dl, dd, dt, ol, li, p, h1, h2, h3, h4, h5, h6, textarea, form, select, fieldset, table, td, div, input {margin:0;padding:0;-webkit-text-size-adjust: none}
 4 h1, h2, h3, h4, h5, h6{font-size:12px;font-weight:normal}
 5 body>div{margin:0 auto}
 6 div {text-align:left}
 7 a img {border:0}
 8 body { color: #333; text-align: center; font: 12px "宋体"; }
 9 ul, ol, li {list-style-type:none;vertical-align:0}
10 a {outline-style:none;color:#535353;text-decoration:none}
11 a:hover { color: #D40000; text-decoration: none}
12 .clear{height:0; overflow:hidden; clear:both}
13 .button {display: inline-block;zoom: 1; *display: inline;vertical-align: baseline;margin: 0 2px;outline: none;cursor: pointer;text-align: center;text-decoration: none;font: 14px/100% Arial, Helvetica, sans-serif;padding:0.25em 0.6em 0.3em;text-shadow: 0 1px 1px rgba(0,0,0,.3);-webkit-border-radius: .5em; -moz-border-radius: .5em;border-radius: .5em;-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);box-shadow: 0 1px 2px rgba(0,0,0,.2);
14 }
15 .red {color: #faddde;border: solid 1px #980c10;background: #d81b21;background: -webkit-gradient(linear, left top, left bottom, from(#ed1c24), to(#A51715));background: -moz-linear-gradient(top,  #ed1c24,  #A51715);filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#ed1c24‘, endColorstr=‘#aa1317‘);
16 }
17 .red:hover { background: #b61318; background: -webkit-gradient(linear, left top, left bottom, from(#c9151b), to(#a11115)); background: -moz-linear-gradient(top,  #c9151b,  #a11115); filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#c9151b‘, endColorstr=‘#a11115‘); color:#fff;}
18 .red:active {color: #de898c;background: -webkit-gradient(linear, left top, left bottom, from(#aa1317), to(#ed1c24));background: -moz-linear-gradient(top,  #aa1317,  #ed1c24);filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#aa1317‘, endColorstr=‘#ed1c24‘);}
19
20 /*放大显示效果*/
21 #bigFont{height:45px;position:absolute;background-color:#8AD151;display:none;line-height:45px;font-size:30px;font-weight:bold;padding:0 5px;}
22 #bigFont span{margin-left:8px;}
23 #bigFont span:first-child{margin-left:0;}

  第二步:创建事例页面demo.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 6 <title>输入文字放大并格式化</title>
 7 <meta name="description" content="">
 8 <meta name="keywords" content="">
 9 <link rel="stylesheet" type="text/css" href="css/style.css" />
10 <script type="text/javascript" src="js/jquery-1.11.3.js"></script>
11 <script type="text/javascript" src="js/fontmark.js"></script>
12 </head>
13 <style>
14     form{margin-top:20px;}
15     input[type=‘text‘]{display:inline-block;width:20%;height:30px; line-height:30px;text-indent:10px;}
16     .group{  display: inline-block;height:60px;line-height:60px;margin:2px 20px;width:100%;font-size:16pt;}
17 </style>
18 <body>
19     <form action="">
20         <div class="group">银行卡:<input id="txtBank" type="text" /></div>
21         <div class="group">身份证:<input id="txtIdCard" type="text" /></div>
22         <div class="group">手机号:<input id="txtPhone" type="text" /></div>
23         <div class="group">默认值:<input id="txtDefault" type="text" /></div>
24     </form>
25 </body>
26 </html>
27 <script>
28     $(function(){
29         $("#txtBank").fontMark({
30             ipttype:3
31         });
32         $("#txtIdCard").fontMark({
33             ipttype:1
34         });
35         $("#txtPhone").fontMark({
36             ipttype:2
37         });
38         //默认
39         //$("#txtDefault").fontMark();
40
41         //设置分隔符
42         // $("#txtDefault").fontMark({
43         //     separator:‘-‘
44         // });
45
46         //设置分隔符分隔位数
47         $("#txtDefault").fontMark({
48             separator:"-",
49             sepnum:"3"
50         });
51     });
52 </script>

  第三步:创建插件脚本文件fontmark.js

  1 /**
  2  *
  3  * @authors Zeke ([email protected])
  4  * @date    2015-07-14 13:10:16
  5  * @version V1.0
  6  */
  7
  8 (function($) {
  9     $.fn.fontMark = function(options) {
 10         /*
 11          *    说明:数字放大镜随着字数延伸
 12          *    ipttype : 输入类型(0-默认  1-身份证   2-手机号   3-银行卡)
 13          *    separator:分隔符(空格 or 横线)
 14          *    sepnum:   分隔位数(默认0,1,2,3……)
 15          *    seprule:  分隔规则默认(身份证: 3 3 4 4 4   手机号: 3 4 4   银行卡:4 4 4 4)
 16          */
 17         var defaults = {
 18             ipttype: 0,    //输入类型
 19             separator: ‘ ‘,//分隔符
 20             sepnum: 0,     //分隔位数
 21             seprule: []    //分隔规则数组
 22         };
 23         // Extend our default options with those provided.
 24         var opts = $.extend({}, defaults, options);
 25         // Our plugin implementation code goes here.
 26         $this = $(this);
 27
 28         //定义预展示输入框的坐标
 29         var glassT = $this.offset().top,
 30             glassL = $this.offset().left;
 31         //定义放大显示的Html
 32         var glassStr = ‘<div id="bigFont"><nobr><span></span></nobr></div>‘;
 33         $this.after($(glassStr));
 34         $this.keyup(function() {
 35             $this = $(this);
 36             showBigInfoBox();
 37         });
 38         //分隔规则
 39         if (opts.sepnum == 0) {
 40             if (opts.ipttype == 1 && opts.seprule.length == 0) {
 41                 opts.seprule = [3, 3, 4, 4, 4];
 42             } else if (opts.ipttype == 2 && opts.seprule.length == 0) {
 43                 opts.seprule = [3, 4, 4];
 44             } else if (opts.ipttype == 3 && opts.seprule.length == 0) {
 45                 opts.seprule = [4, 4, 4, 4];
 46             } else {
 47                 opts.sepnum = 4;
 48             }
 49         }
 50
 51         //求分隔规则数组开始值
 52         function SumSeqRule(idx) {
 53             var starIdx = 0;
 54             for (var i = 0; i < idx; i++) {
 55                 starIdx += opts.seprule[i];
 56             }
 57             return starIdx;
 58         }
 59
 60         //生成放大镜
 61         function showBigInfoBox() {
 62             var inputVal = $this.val(),
 63                 len = inputVal.length;
 64             $("#bigFont").css({
 65                 "top": (glassT - 50) + "px",
 66                 "left": glassL + "px"
 67             });
 68             var style = "top:‘+(glassT-50)+‘px;left:‘+glassL+‘px;"
 69             if (!inputVal) {
 70                 $("#bigFont").hide();
 71                 return false;
 72             }
 73
 74             //处理不同类型,格式的逻辑
 75             $("#bigFont").html(‘<nobr><span></span></nobr>‘);
 76             //新的显示内容
 77             var bigContent = "";
 78             var count = opts.sepnum == 0 ? opts.seprule.length : Math.ceil(len / opts.sepnum);
 79             if (opts.ipttype != 0) {
 80                 //身份证 手机号  银行卡
 81                 for (var i = 0; i < count; i++) {
 82                     bigContent += (i == 0 ? "" : opts.separator) + inputVal.substr(SumSeqRule(i), opts.seprule[i]);
 83                 }
 84             } else {
 85                 for (var i = 0; i < count; i++) {
 86                     bigContent += (i == 0 ? "" : opts.separator) + inputVal.substr(i * opts.sepnum, opts.sepnum);
 87                 }
 88             }
 89             $("#bigFont").find("span").html(bigContent);
 90             $("#bigFont").show();
 91         }
 92         //控制数字放大镜的显示与销毁
 93         $this.focus(function(event){
 94             $this = $(this);
 95             showBigInfoBox();
 96         });
 97         $this.blur(function(event){
 98             $("#bigFont").html("").hide();
 99         });
100     };
101 })(jQuery);

  效果图

  

  Github下载地址

https://github.com/zhf1206/FontMark  

  欢迎大家一起交流分享、讨论学习,将这个插件完善的更加强大,让我们齐手并进,走得更远。

时间: 2024-10-21 04:34:51

对文本框中输入的内容放大显示和格式化的相关文章

面试题之请写出用于校验 HTML 文本框中输入的内容全部为数字 的 javascript 代码

<input type="text" id="d1" onblur=" chkNumber(this)"/> <script type=”text/javascript” /> function chkNumber(eleText) { var value =eleText.value; var len =value.length; for(vari=0;i<len;i++) { if(value.charAt(i)

.Net常用技巧_TextBox文本框限制输入的内容

1,限制只能输入数字 private void txtSize_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar != 8 && e.KeyChar != 13 && !char.IsDigit(e.KeyChar) && e.KeyChar != 46) { MessageBox.Show("请输入数字"); e.Handled = true; } } 2,限制只能

JavaScript实现在页面上的文本框中输入小写字母自动变为大写字母

<script language="javascript" type="text/javascript"> $(function () { $("input[type=text]").keyup(function () { $(this).val($(this).val().toUpperCase()); }); }); </script> $("input[type=text]") 处可为文本框ID,

JavaScript实现在文本框中输入空格时自动填写某个值

<script language="javascript" type="text/javascript"> var txtText4 = "#" + '<%= new DynamicControl(this, "Text4").ClientID%>'; $(function () { $(txtText4).keyup(function (e) { if (e.which == 32) $(this).

实现文本框中输入限制字数的效果

实现文本框中输入限制字数的效果: <!DOCTYPE html> <html> <head lang="zh"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta charset="utf-8" /> <title>采销商品基本信息</title> </head>

Tag It 一款 Jquery控件,当你在文本框中输入逗号时,自动帮你分隔开相关内容

Demo地址:http://webspirited.com/tagit/ 使用方法: 除了JQuery脚本外,下面的脚本也是必须的,这些脚本你都可以去GitHub下载:https://github.com/hailwood/jQuery-Tagit <link href="~/Content/jquery.tagit.css" rel="stylesheet" /><link href="~/Content/tagit.ui-zendes

js同步获取文本框textarea输入的内容

<textarea name="" cols="" rows="" class="loe_hk10" id="eml" onkeyup="SwapTxt()"></textarea>   <p id="lyny"> </p><!--//这个地方是同步显示内容的 --> <script type=&quo

实现在矩形框中输入文字,可以显示剩余字数的功能

如下图: 要实现上面的功能,需要做到三点: 1.实现矩形框布局 思路就是矩形框作为整个布局的一个background,在drawable中创建一个shap.xml样式文件 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"     android:shape="r

文本框中输入极限

谁经常在一些网站注册,但是,也存在一些问题常常,让我们不要喂easy注册信息填写了很多很好的,然后点击提交,结果弹出一个对话框.告诉你的娜娜不正确.了非法字符,然后让你把写错的更改过来,这是好点的,不好的让你都又一次写一遍,还有的由于username已经被注冊,然后返回去让你又一次填写username,然后原来的某些信息也得又一次写一遍,这就特别烦人,我们可不能那么设计啊. 我认为最好的办法,是在用户输入的时候.通过文本的change事件,仅仅要输错了一个字符,就马上禁止继续输入.直到等到用户输