亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

JS 文本輸入框放大鏡效果

系統(tǒng) 3065 0

JS 文本輸入框放大鏡效果

今天下午研究了下 "文本輸入框放大鏡效果" 當(dāng)然KISSY官網(wǎng)也有這種組件 請看 kissy demo

其實(shí)這種效果 對于很多童鞋來說 應(yīng)該并不陌生!我今年最早也是在 12306官網(wǎng)搶票 中 添加聯(lián)系人 要填寫電話號碼中看到這種效果!如下圖所示:

JS 文本輸入框放大鏡效果

所以今天下午也就研究下這個,特此分享出來給大家!也做了一個簡單的DEMO jSFiddle鏈接地址如下:

JSFiddle鏈接:

想要查看效果!請輕輕的點(diǎn)擊我!

基本原理:

其實(shí)基本原理也很簡單!通過JS不斷的監(jiān)聽輸入框值的變化(通過jquery中的keyup事件),有值的話 把內(nèi)容值賦值給那顯示div上去。

配置參數(shù)如下:

inputElem
'.inputElem', 輸入框目標(biāo)元素
parentCls '.parentCls', 目標(biāo)元素的父類
align 'top',    對齊方式有 ['top','bottom','left','right']四種 默認(rèn)為top
splitType [3,4,4], 拆分規(guī)則
delimiter '-' , 分隔符可自定義

組件不足之處:

1. 不支持鼠標(biāo)右鍵 中的 復(fù)制 剪切 黏貼事件。目前只支持鍵盤操作。但是KISSY是支持的,因?yàn)镵ISSY有一個valueChange事件 可以不斷的監(jiān)聽鍵盤操作(原理是:用個定時器不斷的檢測輸入框值得變化),鼠標(biāo)右鍵操作等等事件,也就是說可以實(shí)時的監(jiān)聽輸入框之前值,之后值得變化,但是Jquery目前沒有這個事件。所以我目前只用keyup事件來做個demo。雖然網(wǎng)上有很多 關(guān)于 oninput && onpropertychange 實(shí)時監(jiān)聽輸入框值的變化。但是我也試了下 在window7 IE下有問題 特別是IE9下 有嚴(yán)重的問題!就是不支持這個東西!所以也沒有用這個來監(jiān)聽。至于KISSY中的 "valueChange"事件方法 我有空的時候 想偷下他們的代碼 來改造下!呵呵!

代碼分析:

HTML代碼:

      
        <
      
      
        div 
      
      
        class
      
      
        ="parentCls"
      
      
        >
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         class
      
      
        ="inputElem"
      
      
         autocomplete 
      
      
        = "off"
      
      
         maxlength
      
      
        ="11"
      
      
        />
      
      
        </
      
      
        div
      
      
        >
      
    

這樣的 父級class 取名為 " parentCls " (需要傳入,當(dāng)然可以自己定義 如上配置項(xiàng))。當(dāng)前input默認(rèn)取名為 "inputElem"(也可以自定義)。HTML結(jié)構(gòu)就是這樣的。

現(xiàn)在來分析下JS代碼:

1. 初始化,綁定事件:如下代碼:

      
        /*
      
      
        *
      * 綁定事件
      * @method _bindEnv
      
      
      
        */
      
      
        
     _bindEnv: 
      
      
        function
      
      
        (){
        
      
      
        var
      
       self = 
      
        this
      
      
        ,
            _config 
      
      =
      
         self.config,
            _cache 
      
      =
      
         self.cache;

        
      
      
        //
      
      
         實(shí)時監(jiān)聽輸入框值的變化
      
      
        $(_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);
            });
        });
     },
      
    

做了以下事件:1.不斷的用keyup監(jiān)聽input值得變化。2. 動態(tài)的生成放大效果HTML代碼。3.如果輸入框值為空 則隱藏掉放大效果div元素,否則 反之!4.就是對元素定位,目前支持四種定位 分別為top(頂部),bottom(底部),left(左側(cè)),right(右側(cè)),JSFiddle demo中做了三種定位(上,右,下)。左側(cè)一般不太可能。5.綁定點(diǎn)擊焦點(diǎn)和失去焦點(diǎn)事件。(點(diǎn)擊焦點(diǎn)顯示,失去焦點(diǎn)隱藏)等等。

2. 格式化一下顯示方式:代碼如下:

      
        /*
      
      
        *
      * 格式化下
      * @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);
     },
      
    

比如我輸入 11122233344 且只能顯示11個數(shù)字的話 ,假如我用 "-"分隔符 拆分規(guī)則是:splitType:[3,4,4] .那么顯示方式應(yīng)該是:111-2223-3344 當(dāng)然也可以用其他的分隔符顯示,上面的代碼就做了這么一件事件。基本的就這么點(diǎn)!下面直接貼下代碼吧!可以直接看代碼 如果有不懂的地方可以留言 謝謝!

HTML代碼:

      
        <
      
      
        h2
      
      
        >
      
      輸入框放大鏡的demo
      
        </
      
      
        h2
      
      
        >
      
      
        <
      
      
        div 
      
      
        style
      
      
        ="height:50px;"
      
      
        ></
      
      
        div
      
      
        >
      
      
        <
      
      
        div 
      
      
        style
      
      
        ="margin-left:56px; margin-top:6px;"
      
      
        >
      
      我的方向是向上,允許輸入長度11位
      
        </
      
      
        div
      
      
        >
      
      
        <
      
      
        div 
      
      
        class
      
      
        ="parentCls"
      
      
        >
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         class
      
      
        ="inputElem"
      
      
         autocomplete 
      
      
        = "off"
      
      
         maxlength
      
      
        ="11"
      
      
        />
      
      
        </
      
      
        div
      
      
        >
      
      
        <
      
      
        div 
      
      
        style
      
      
        ="margin-left:56px; margin-top:6px;"
      
      
        >
      
      我的方向是向右,允許輸入長度18位
      
        </
      
      
        div
      
      
        >
      
      
        <
      
      
        div 
      
      
        class
      
      
        ="parentCls"
      
      
        >
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         class
      
      
        ="inputElem1"
      
      
         autocomplete 
      
      
        = "off"
      
      
         maxlength
      
      
        ="18"
      
      
        />
      
      
        </
      
      
        div
      
      
        >
      
      
        <
      
      
        div 
      
      
        style
      
      
        ="margin-left:56px; margin-top:6px;"
      
      
        >
      
      我的方向是向下,允許輸入長度18位
      
        </
      
      
        div
      
      
        >
      
      
        <
      
      
        div 
      
      
        class
      
      
        ="parentCls"
      
      
        >
      
      
        <
      
      
        input 
      
      
        type
      
      
        ="text"
      
      
         class
      
      
        ="inputElem2"
      
      
         autocomplete 
      
      
        = "off"
      
      
         maxlength
      
      
        ="18"
      
      
        />
      
      
        </
      
      
        div
      
      
        >
      
    

CSS代碼:

      
        * 
      
      {
      
        margin
      
      :
      
        0
      
      ;
      
        padding
      
      :
      
        0
      
      ;}
      
        
.parentCls 
      
      {
      
        margin
      
      :
      
        5px 60px 0
      
      ;}
      
        
 .js-max-input 
      
      {
      
        border
      
      :
      
         solid 1px #ffd2b2
      
      ;
      
        background
      
      :
      
         #fffae5
      
      ;
      
        padding
      
      :
      
         0 10px 0 10px
      
      ;
      
        font-size
      
      :
      
        20px
      
      ;
      
        color
      
      :
      
         #ff4400
      
      }
    

JS所有代碼:

View Code

demo下載

JS 文本輸入框放大鏡效果


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

主站蜘蛛池模板: 8050午夜一级全黄毛片 | 四虎影视永久在线精品免费 | 在线观看欧美亚洲日本专区 | 看全色黄大色大片免费久黄久 | 天天做夜夜操 | 国产成人咱精品视频免费网站 | 亚洲十欧美十日韩十国产 | 波多野结衣中文丝袜字幕 | 中文字幕丝袜在线56页 | 天天操天天操天天操 | 亚洲综合涩 | 久久网免费视频 | 欧美一区二区三区在线可观看 | 伊人高清视频 | 男女69式互添在线观看 | 亚洲欧美专区精品久久 | 日本欧洲95视频 | 国产欧美日韩精品a在线观看 | 在线免费视频国产 | 91视频国产精品 | a级毛片毛片免费观看久潮 a级毛片免费 | 成人免费视频视频在线不卡 | 涩涩在线| 国产成人免费不卡在线观看 | 久久久久久一级毛片免费无遮挡 | 免费一级成人毛片 | 天天拍天天操 | 一区不卡在线观看 | 日本久久久久中文字幕 | 国产精品91在线 | 色婷婷综合网 | 国产精品亚洲欧美一区麻豆 | 午夜爱爱网 | 神马影院我不卡影院 | 老司机免费精品视频 | 久久99爰这里有精品国产 | 欧美一级毛片一免费 | 中文字幕一级毛片 | 四虎4hu永久免费国产精品 | 亚洲精品久久久久中文字幕一区 | 伊人色网站 |