类似163邮箱里面的这个效果如何实现?

pyangjie 2009-12-28 11:12:22
类似163邮箱里面的这个效果如何实现?
在163邮箱发信的时候,我点右边通讯录里面的名单,收件人这个输入框的内容会自己增加,并且超过长度之后高度会自适应,
请问这个效果如何实现,?
"输入框的宽度固定,高度随内容的增减而改变,谁有类似的效果啊,"
请高手解决..
...全文
245 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
KK3K2005 2009-12-30
  • 打赏
  • 举报
回复
仔细去看下源代码
那个并不是输入框
只是一个DIV在加上脚本模拟的输入框
pyangjie 2009-12-28
  • 打赏
  • 举报
回复
请高手出来说话,我一直在搞,发现它的输入框只可以显示两个字符,然后超过之后就赋值到一个DIV中,然后输入框又向后移动。。哎,太高深了,还希望高手来解决。。
startdream 2009-12-28
  • 打赏
  • 举报
回复
因为那个输入框本身就是高度自适应的啊
里面的邮箱地址条,是float:left的,所以如果放不下的话,自动就换行了么。
chinank 2009-12-28
  • 打赏
  • 举报
回复
你把那个页面下崽下来,然后将页面的连接改成绝对连接将css拿下,代码就有了。

以前我经常这么干。
千游 2009-12-28
  • 打赏
  • 举报
回复
得到通讯录里面的名单字符的长度,再改变输入框的width属性,再填值,个人认为。
startdream 2009-12-28
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript" type="text/javascript">
function Type(c,o,i){
this.oC=document.getElementById(c);
this.oO=document.getElementById(o);
this.oI=document.getElementById(i);
var _this=this;
_this.init=function(){
_this.oI.onblur=_this.blurs;
_this.oI.onkeydown=_this.keydown;
_this.oI.addEventListener("input",_this.change,false);
_this.oI.onpropertychange=_this.change;
_this.oC.onclick=function(){
_this.oI.focus();
}
_this.oI.focus();
}
_this.blurs=function(e){
var text=_this.oI.value;
if(text){
_this.create(text,'text');
alert("执行了一次blur操作");
}
}
_this.keydown = function(e){
var evt=e?e: (window.event ? window.event : null);
var key=evt.keyCode||evt.which;
if (key == 13 || key == 32) {
var text=_this.oI.value;
_this.create(text,'text');
}
}

_this.change=function(e){
var L=_this.oI.value.length;
var reg = /[^\u4E00-\u9FA5\uf900-\ufa2d]/g;
var temp = _this.oI.value.replace(reg,'');
var cL=temp.length;
var width=(13+8*L+4*cL);
_this.oO.style.width=width+"px";
}

_this.create=function(value,cName){
var oNode=document.createElement("div");
oNode.innerHTML=value;
oNode.className=cName;
_this.oC.insertBefore(oNode,_this.oO);
_this.oI.value="";
_this.oI.focus();
_this.oO.style.width="13px";

}
}
window.onload=function(){
var my=new Type("container","outer","inputbox");
my.init();
}
</script>
<style>
.text{
float:left;
padding:0px 3px;
}
input{
float:left;
}
</style>
</head>
<body>
<div style="width:400px;overflow:hidden; background:#FFF; border:1px solid #999; padding:5px; word-wrap: break-word; word-break: break-all; line-height:20px; font-size:14px; " id="container">
<div id="outer" style="width:13px; float:left;">
<input style="border:none; width:100%;" id="inputbox" value=""/>
</div>

</div>
</body>
</html>
pyangjie 2009-12-28
  • 打赏
  • 举报
回复
楼上说的增加的是这样,但是删除就好像不是了,具体怎么样我也没的搞明白,增加的功能我已经实现了,就是不知道如何删除和修改了,还希望高手出来解决下。。
dudp1985 2009-12-28
  • 打赏
  • 举报
回复
用谷歌浏览器审查元素
看起来像文本框的东西实际上是一个div,里面有个input,这个input是无边框的。每输入一个地址回车或者onblur都会在input之前创建一个div里面是地址,加上些别的效果。再输入一个就再加一个div,同时在第一个div和第二个中间加一个input,同样无边框,长度很短。input为空的时候如果按backspace就会把前面的div删掉,同时删掉自己,再跟右边通讯录联系起来加很多很多js就成了
yishiwucheng 2009-12-28
  • 打赏
  • 举报
回复
不太清楚,帮顶
startdream 2009-12-28
  • 打赏
  • 举报
回复
他的输入框是个排在后面的一个input,input的宽度是100%,这个input外面包着一个DIV,这个DIV的宽度是被JS动态改变的,敲入一个英文字符,DIV宽度增加8,中文字符增加12
zhangjf_self 2009-12-28
  • 打赏
  • 举报
回复
我也想知道
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2009-12-28 11:12
社区公告
暂无公告