Javascript 按 enter 跳转前为什么还会加一个回车

weixin_40506575 2018-06-14 02:03:10
已经阻止默认行为,为什么按 enter 键后会先添加回车,然后再跳转到下一个 pre 标签。

<script>
window.onload=function keycode() {
focusfirst();
var oTargetGroup =document.getElementsByClassName("target");
for (var i=0; i<oTargetGroup.length;i++) {
oTargetGroup[i].onkeyup = function (e) {
var e = e||event;
var NextTarget=this.nextElementSibling.nextElementSibling.nextElementSibling;
if (e.keyCode==13) {
e.preventDefault();

NextTarget.focus();
return false;

}

}

}
}
function focusfirst() {
var oFirst= document.getElementById("firsttarget");
oFirst.focus();
}

</script>
</head>
<body>
<h1>文本编辑器</h1>
<hr />

<div class="mainpanel">
<pre class="source">Text 1</pre>
<pre class="status"></pre>
<pre id="firsttarget" class="target" contenteditable ></pre>
<pre class="source">Text 2</pre>
<pre class="status"></pre>
<pre class="target" contenteditable ></pre>
<pre class="source">Text 2</pre>
<pre class="status"></pre>
<pre class="target" contenteditable ></pre>
</div>

</body>
</html>


...全文
903 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
M51921 2018-06-30
  • 打赏
  • 举报
回复
按下执行失去焦点事件试试
Logerlink 2018-06-21
  • 打赏
  • 举报
回复
keyup 是按下键盘离开的事件,此时键盘上的字符还是会输到文本框的
keydown 是按下键盘就执行了的
灰灰_世界 2018-06-20
  • 打赏
  • 举报
回复
加个

if(e.preventDefault){
e.preventDefault()
}else{
e.returnVlaue= false;
}

就可以了
灰灰_世界 2018-06-20
  • 打赏
  • 举报
回复
加个
if(e.preventDefault){
e.preventDefault()
}else{
e.returnVlaue= false;
}
就可以了
weixin_40506575 2018-06-14
  • 打赏
  • 举报
回复
改成 keydown 就没问题了,谢谢
weixin_40506575 2018-06-14
  • 打赏
  • 举报
回复
引用 1 楼 functionsub 的回复:
因为keydown的时候就已经插进去了。
要如何解决呢?
functionsub 2018-06-14
  • 打赏
  • 举报
回复
因为keydown的时候就已经插进去了。

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧