网页中输入框高度自适应的5个解决方法

一.div模拟textarea以实现高度自适应

CSS代码:

.test_box {
    width: 400px;
    min-height: 120px;
    max-height: 300px;
    _height: 120px;
    margin-left: auto;
    margin-right: auto;
    padding: 3px;
    outline: 0;
    border: 1px solid #a0b3d6;
    font-size: 12px;
    word-wrap: break-word;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-user-modify: read-write-plaintext-only;
}

HTML代码:

JS代码:

if (typeof document.webkitHidden == "undefined") {
    // 非chrome浏览器阻止粘贴
    box.onpaste = function() {
        return false;
    }
}

注意事项:

1.焦点:outline:0;

2.清除p标签的margin值:.test_box p{ margin: 0; }

3.可编辑模式的div标签与textarea一样,是支持focus, blur事件的。自然也支持focus伪类,demo页面中Firefox等现代浏览器获取焦点时的外发光就是使用的:focus。

二.用JS控制来实现:方法一

三.用JS控制来实现:方法二

autoresizing textarea

输入框自适应高度的纯css及jQuery共2种解决方案

 在实际应用中,有时会因页面布局位置及数据量原因,表单的输入框()会出现显示不全内容的情况。例如输入框定义了10个字符宽度,但里面的文本却有30个字,那么超出部分就会被挡住,需要光标后移才看到。

html页面代码为:

第一种思路是改变输入框的高度,首先要把input换成textarea,通过焦点的focus和blur来触发JS,改变输入框的高度rows值。

html代码为:
jQuery代码为:
$("textarea:[name='note']").focus(function(){
$(this).attr("rows","5");
})
$("textarea:[name='note']").blur(function(){
$(this).attr("rows","1");
})

当然也可以用mouseenter等事件进行触发,看具体情况而定,以达到更好的用户体验。
缺点是高度固定,不管内容长或短,高度都不变。

第二种思路是用纯CSS,靠样式定义来实现,当内容超出可视范围时div会自动变高,就是实现了自适应高度,有很好的用户体验和灵活性。

html代码为:

CSS为:

.adaptive_box { text-align:left; line-height:16px; font-size: 12px; border: 1px solid #ccc; padding: 0px; background:#fff;
width: 100px; min-height: 16px; max-height: 300px; _height: 16px;
margin-left: auto; margin-right: auto; outline: 0; word-wrap: break-word;overflow-x: hidden;overflow-y: visible;
}

原理很简单,就是靠overflow-y: visible;来实现自适应。
不过这输入框变为div,就不是表单元素了。我们要多做一些工作,在提交表单时增加JS(jQuery)对其进行处理,例如:

var note=$(".adaptive_box").html();
或var note=$("div[name='note']").html();

然后再把这值作为表单一个项来提交,可以整个表单就是通过jQuery的ajax提交,也可以另外做个隐藏的input,表单提交时为其赋值为note的值即可。

时间: 2024-09-26 19:02:29

网页中输入框高度自适应的5个解决方法的相关文章

网页中JS函数自动执行常用三种方法_javascript技巧

本文为大家分享了在网页中JS函数自动执行常用方法,供大家参考,具体内容如下 一.JS方法 1.最简单的调用方式,直接写到html的body标签里面: <body onload="myfunction()"> <html> <body onload="func1();func2();func3();"> </body> </html> 2.在JS语句调用: <script type="text

wps文字中的字体无法继续放大的解决方法

  有时为了打印和设计的方便,我们需要将wps文字中的字体进行放大多倍,但wps文字默认最大只有七十二磅,之后就不能放大了,那么如果你需要更大的字体,该怎么进一步对字体进行放大呢?下面小编就为大家介绍wps文字中的字体无法继续放大的解决方法介绍,希望能对大家有所帮助! 方法/步骤 1.打开你的wps软件,选中你要放大的字体.然后打开开始菜单,在字体后面找到"增大字号"功能. 2.然后,反复的点击"增大字号",几次之后,选中的汉字字体就会变得很大,直到满足你的要求.

jquery ui中 accordion的问题及我的解决方法

原文:jquery ui中 accordion的问题及我的解决方法 jquery有一套所谓的ui组件,很不错的.如果有兴趣的朋友,可以参考http://jqueryui.com/ 但其中的accordion,我使用的时候发现一些问题.如果按照demo那样,写一些静态内容,倒也正常.但如果每个面板里面的内容是动态绑定的,则会发生高度变小,然后出现滚动条的诡异现象   <%@ Page Language="C#" %> <%@ Import Namespace="

Visual C++程序设计中Windows GDI贴图闪烁的解决方法_C 语言

本文实例讲述了Visual C++程序设计中Windows GDI贴图闪烁的解决方法.分享给大家供大家参考.具体如下: 一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一: 如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕 上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期. 一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的. 这样

window.location.href中url中数据量太大时的解决方法

 这篇文章主要为大家介绍下window.location.href中url中数据量太大时的解决方法,需要的朋友可以参考下 先说一下今天遇到的问题   一个导出excel的处理,在按钮按下后需要传很大一个数据到后台,刚开始的做法如下: 代码如下: var actionUrlSetData = "****Action!exportDatas.action"+ "?now=" + new Date().getTime(); window.location.href= ac

win7系统中常见的一些小问题和解决方法

在使用电脑中难免会遇到一些小问题,而小问题如果你知道解决方法的话,那么基本上几分钟就能解决了,而如果你不知道可以要想很久或者百度很久才能找到解决方法. 1 截图花屏 这个问题主要是由于显卡驱动程序和你的显卡不是很配的情况下才会发生,我们只需要重新换个显卡驱动基本上就没问题了. 2 盘符错乱 盘符错乱从Win95时代便经常发生,这一次Windows 7更严重了.如果你是从光盘安装的Windows 7,那系统就会把它所在分区设为C区,然后再根据管理来排列其他分区.要解决Windows 7的盘符错乱可

win7系统中excel导入外部数据出错的解决方法

  在我们平常办公中,最常用的软件是什么?当然是office软件中的word文档.Execl表格和PPT了,在需要用到文字的时候我们选择word,在做数字统计时用execl,演示图片时使用PPT,这三种办公软件是我们常见的.但是最近有win7的用户来反映说,在用excel导入外部数据时老是出错,无法导入成功,这样不仅损坏外部数据,而且也影响我们的办公效率.下面小编来教大家一招,如何在win7系统电脑中导入外部的数据.   win7系统中excel导入外部数据出错的解决方法如下: 1.首先,咱们需

PHP中file_exists()判断中文文件名无效的解决方法_php技巧

本文实例讲述了PHP中file_exists()判断中文文件名无效的解决方法.分享给大家供大家参考.具体方法如下: php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档时是无效.本文就来解决此问题,下面我们一起来看看. 定义和用法:file_exists() 函数检查文件或目录是否存在. 如果指定的文件或目录存在则返回 true,否则返回 false. 例子1 复制代码 代码如下: <?php

flash as3 中动态加载库类失败解决方法

flash as3 中动态加载库类失败解决方法 这是错误的写法 for (var i:number=1; i<4; i++) { var mc1:mc1 = new mc1(); addchild(mc1); } as3里怎么循环加载库里的mc1 mc2 mc3类 就是下面意思是怎样个的写法 for (var i:number=1; i<4; i++) { var "mc"+i:"mc"+i = new "mc"+i(); addch