javascript - js中一个模拟的聊天的代码段,用户输入完成后点击回车发送,但是在文本框中会遗留一个回车的问题,要被折磨死了,求完美解决办法?
PHP中文网
PHP中文网 2017-04-10 17:55:31
[JavaScript讨论组]

  • 在吗
//文本输入框 //发送按钮

var but = document.getElementsByTagName("input")[0]; var textarea1 = document.getElementsByTagName("textarea")[0]; var ul1 = document.getElementsByTagName("ul")[0]; but.onclick=function(){//点击可以发送 var li2 = document.createElement("li"); var p2 = document.createElement("p"); li2.className = "right"; p2.className = "clear"; li2.innerHTML = textarea1.value; textarea1.value = ""; ul1.appendChild(li2) ul1.appendChild(p2) } textarea1.onkeypress=function(evt){//按回车也会发送 var e = evt || event; console.log(e.keyCode) if(e.keyCode == 65 ){ var li2 = document.createElement("li"); var p2 = document.createElement("p"); li2.className = "right"; p2.className = "clear"; li2.innerHTML = textarea1.value; ul1.appendChild(li2) ul1.appendChild(p2) textarea1.value=""; } }

做过的尝试中相对好点的有在事件最后追加一个settimeout,在清除一次文本输入框,但是会有一个光标忽然从第二行跳到第一行的动画,不是很完美.想求大神指教一下

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
PHPz

回车的keyCode是13吧?你的问题是回车的换行么?
textarea1.onkeypress=function(evt){

.....你的代码
evt.preventDefault();//加这个阻止默认事件

}

伊谢尔伦

大兄弟,enter的keycode是13啊,65是大写字母A

此外,顺带一提,注意html的语意化。

// <input type="button" value="发送" name="">
<button type="button">发送</button>

在js的逻辑中尽量封装函数复用,不要copy代码两遍。以你的代码为例子。

but.addEventListener('click', clickHandle);
textarea1.addEventListener('keypress', function(evt) { //按回车也会发送
  var e = evt || event;
  console.log(e.keyCode)
  if (e.keyCode === 13) return clickHandle();
});

function clickHandle() {
  var li2 = document.createElement("li");
  var p2 = document.createElement("p");
  li2.className = "right";
  p2.className = "clear";
  li2.innerHTML = textarea1.value;
  ul1.appendChild(li2)
  ul1.appendChild(p2)
  textarea1.value = "";
}

原谅我处女座的病突然犯了,求不打死。

高洛峰

    请输入代码
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号