input文本框设置自动宽度,textarea文本域设置自动高度。

input文本框设置自动宽度,textarea文本域设置自动高度。

html代码如下:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
    <title>文本框自动设置宽度,文本域自动设置高度</title>
    <style type="text/css">
        /*input文本框变下划线*/
        input {
            border: none;
            border-bottom: 1px solid #000;
        }

        textarea {
            width: 80%; /*自动适应父布局宽度*/
            overflow: auto;
            word-break: break-all;
            background-color: #DFE8F6;
            /*在ie中解决断行问题(防止自动变为在一行显示,主要解决ie兼容问题,ie8中当设宽度为100%时,文本域类容超过一行时,
        当我们双击文本内容就会自动变为一行显示,所以只能用ie的专有断行属性“word-break或word-wrap”控制其断行)*/
        }
    </style>
    <script type="text/javascript">
        $(function () {
            //设置文本域自动高度
            $.fn.autoHeight = function () {
                function autoHeight(elem) {
                    elem.style.height = 'auto';
                    elem.scrollTop = 0; //防抖动
                    elem.style.height = elem.scrollHeight + 'px';
                }

                this.each(function () {
                    autoHeight(this);
                    $(this).on('keyup', function () {
                        autoHeight(this);
                    });
                });
            }
            $('textarea[autoHeight]').autoHeight();

            //input框自动宽度
            $("input").unbind('keydown change keyup').bind('keydown change keyup', function () {
                var input = $('<input />').css({display: 'none'});
                $('body').append(input);
                var inputDefaultWidth = input.width();
                input.remove();
                var valueWidth = textWidth($(this).val());
                if (valueWidth > inputDefaultWidth) {
                    $(this).width(valueWidth);
                }else{
                    $(this).width(inputDefaultWidth);
                }
            });
        });

        //获取文本宽度
        function textWidth(text) {
            var sensor = $('<pre>' + text + '</pre>').css({display: 'none'});
            $('body').append(sensor);
            var width = sensor.width();
            sensor.remove();
            return width;
        };

    </script>
</head>
<body>
<div id="content">
    <div>文本框:
        <input class="text" type="text" id="" name="" value=""/>
    </div>
    <div>文本域:</div>
    <div><textarea autoHeight="true" id="" name="" value=""></textarea></div>
</div>
</body>
</html>

展示效果如下:

开始:

在这里插入图片描述
输入内容后:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值