国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

我的插件のinput文本框實現寬度自適應

2024-04-27 15:00:48
字體:
來源:轉載
供稿:網友

先來最后結果:DEMO

 

介紹一下如何讓一個文本框的寬度能夠隨著文本框中的內容的寬度增長而增長,也就是能夠實現寬度自適應效果。

代碼實例如下:

<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="author" content="skyFi.github.io/skylor" /><title>skyFi.github.io/skylor</title> 

<script type="text/javascript">
window.onload
=function(){

var otxt=document.getElementById("txt");
otxt.onkeyup
=function(){

this.size=(this.value.length>4?this.value.length:4);
}
}

</script>

</head>

<body>

<input type="text" id="txt" size="4"/>

</body>

</html>

查看演示:input文本框實現寬度自適應

以上代碼實現了我們的要求,代碼非常的簡單,注冊onkeyup事件處理函數,此函數可以判斷當前輸入內容的長度是否大于默認長度,如果不大于,則文本框的長度就是4,否則就是輸入內容的長度。

但是,這個方式實現了英文輸入能夠很好地工作,可是當遇到使用中文輸入法的時候就不是那么的好用了。因為一般中文輸入法都是先有英文,按下space后才把文字輸入到輸入框的,這會照成計算錯誤。

而且這個一般不能滿足大多數人的需求,于是我又弄一種并組裝了下:請看代碼

;(function ($) {        $.fn.autoFit = function() {            var $this = $(this);            var oldWidth = parseInt($this.CSS('width'));            $this.keydown(function (event) {                var $this = $(this);                setTimeout(function() {                    var val = $this.val().replace(/ /g, '&nbsp');                    var fontSize = $this.css('font-size');                    var fontFamily =  $this.css('font-family');                    var padding = $this.outerWidth() - $this.width();                    var contentWidth = $('<span id="autowidthforinputtext" style="font-size: ' + fontSize + '; padding: 0 ' + padding / 2 + 'px; font-family: ' + fontFamily + '; display: block; position: absolute; visibility: hidden;">' + val + '</span>').insertAfter($this).outerWidth();                    var newWidth = ((contentWidth + padding) > oldWidth) ? (contentWidth + padding) : oldWidth;                    $('#autowidthforinputtext').remove();                    $this.width(newWidth + 'px');                }, 0);            });            return $this;        };})(this['jQuery']);$('#txt').autoFit();

于是這個就可以很好地工作了,恩,自己很滿意。測試路子. github源碼

想了下還是簡單分析下吧:

1、這是Q的fn擴展,好處是可以直接JQuery對象用’.‘就能調用我的函數。

2、采用閉包避免命名污染,同時包裝記錄最開始用戶定義的input寬度。

3、巧妙使用0延時的setTimeout使得插件很好地支持了中文輸入法帶來的之前的BUG。至于為什么,我的另一篇文章中有介紹,setTimeout執行隊列啥的。

4、對輸入的空格做了轉碼處理。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新龙县| 衡阳县| 鹤庆县| 永平县| 乐昌市| 金华市| 大荔县| 襄汾县| 永登县| 通渭县| 永宁县| 天水市| 祥云县| 孝义市| 汝阳县| 台东市| 蚌埠市| 沐川县| 彰化市| 本溪市| 清新县| 大新县| 福泉市| 本溪| 卢龙县| 通州区| 新闻| 剑川县| 米易县| 高青县| 定边县| 调兵山市| 镇康县| 盐城市| 永清县| 乌兰察布市| 乌兰浩特市| 大邑县| 闽侯县| 和田市| 秭归县|