你的位置: 首页 > HTML5网站开发 > 正文
输入框自适应高度的纯css及jQuery共2种解决方案
作者:漫游   分类: HTML5网站开发    时间:2013-3-2 11:35   热度:16533°   字号:        评论:0 
作者:漫游   分类: HTML5网站开发    时间:2013-3-2 11:35   热度:16533°  评论:0 条 

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


html页面代码为:
<input type="text" name="note" size="10" value="">


第一种思路是改变输入框的高度,首先要把input换成textarea,通过焦点的focus和blur来触发JS,改变输入框的高度rows值。
html代码为:<textarea name="note" cols=10 rows=1></textarea>
jQuery代码为:
$("textarea:[name='note']").focus(function(){
$(this).attr("rows","5");
})
$("textarea:[name='note']").blur(function(){
$(this).attr("rows","1");
})
当然也可以用mouseenter等事件进行触发,看具体情况而定,以达到更好的用户体验。
缺点是高度固定,不管内容长或短,高度都不变。


第二种思路是用纯CSS,靠样式定义来实现,当内容超出可视范围时div会自动变高,就是实现了自适应高度,有很好的用户体验和灵活性。
html代码为:<div name="note" class="adaptive_box" contenteditable="true"></div>
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的值即可。

瞧瞧上一篇文章去!   瞧瞧下一篇文章去!
本文标签: javascript CSS
二维码加载中...
本文作者:漫游      文章标题: 输入框自适应高度的纯css及jQuery共2种解决方案
本文地址:http://www.roammemo.com/html5/123.html
版权声明:若无注明,本文皆为“漫游的备忘录”原创,转载请保留文章出处。
返回顶部    首页    手机版本   
版权所有:漫游的备忘录    站长: 漫游    模板基于:博闻广记 v1.2   程序:emlog