gpt4 book ai didi

javascript - 如何在 contenteditable 中向上或向下移动箭头

转载 作者:行者123 更新时间:2023-11-30 14:30:49 25 4
gpt4 key购买 nike

我有一个 html 表格,我可以在其中编写任何内容,并且可以使用制表符。但我也在尝试弥补向上和向下箭头的工作。我在网上尝试了几个脚本,但无法使这些脚本中的任何一个工作,因为它们是针对特定场景的。喜欢:

$(document).keydown(function(e){
switch(e.which){
case 37: // left arrow
$(e.target).closest('td').nextAll('td.editable:first').find('div');
break;
case 39: // right arrow
$(e.target).closest('td').nextAll('td.editable:first').find('div');
break;
default: // exit for other keys
return;
}
e.preventDefault(); // prevent default action
});
table{
border: 1px solid black;
table-layout: fixed;
}
tr {
height: 28px;
width: 30px;
}
td{
border:1px solid #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table style="width: 600px;border: 1px solid black;">
<tbody>
<tr style="height: 16px;">
<td colspan="6" style="text-align: center; height: 16px; border: 1px solid black;">
<p><strong>Groups</strong></p>
</td>
</tr>
<tr style="border: 1px; border-color: red;">
<td><p style="text-align: left;"><em><strong>Areas</strong></em></p></td>
<td style="border-color: red;border: 1px solid red;"><div class="editable"></div></td>
<td style="border-color: red;border: 1px solid red;"><div class="editable"></div></td>
<td style="border-color: red;border: 1px solid red;"><div class="editable"></div></td>
<td style="border-color: red;border: 1px solid red;"><div class="editable"></div></td>
<td style="border-color: red;border: 1px solid red;"><div class="editable"></div></td>
</tr>
<tr>
<td style="border-color: red;border: 1px solid red;"><div class="editable"></div></td>
<td><div class="editable"></div></td>
<td><div class="editable"></div></td>
<td><div class="editable"></div></td>
<td><div class="editable"></div></td>
<td><div class="editable"></div></td>
</tr>
</tbody>
</table>

是否有一个简单的脚本可以使箭头在此表中可用?

最佳答案

使用 <td> 的类名会容易得多或 <div>元素,但在没有它们的情况下,这是一个解决方案。参见 https://api.jquery.com/category/traversing/tree-traversal/了解更多信息。

另外,使用 .focus()聚焦领域:

$(document).keydown(function(e) {

switch (e.which) {
case 37: // left arrow
$(e.target).parent().prev().find('div').focus()
break;
case 39: // right arrow
$(e.target).parent().next().find('div').focus()
break;
case 40: // down
$(e.target).parent().parent().next().children().eq($(e.target).parent().index()).find('div').focus()
break;
case 38: // up
$(e.target).parent().parent().prev().children().eq($(e.target).parent().index()).find('div').focus()
break;
default: // exit for other keys
return;
}

});
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<table style="width: 1400px;border: 1px solid black;">
<tbody>
<tr style="height: 16px;">
<td colspan="6" style="text-align: center; width: 979px; height: 16px; border: 1px solid black;">
<p><strong>Groups</strong></p>
</td>
</tr>
<tr border: 1px; border-color: red; ">
<td><p style="text-align: left; "><em><strong>Areas</strong></em></p></td>
<td style="border-color: red;border: 1px solid red; "><div contenteditable>fgjhdfjdg</div></td>
<td style="border-color: red;border: 1px solid red; "><div contenteditable><sadffsf</div></td>
<td style="border-color: red;border: 1px solid red; "><div contenteditable>zxcvxzcv</div></td>
<td style="border-color: red;border: 1px solid red; "><div contenteditable>cvbnvbn</div></td>
<td style="border-color: red;border: 1px solid red; "><div contenteditable>REQZX</div></td>
</tr>
<tr>
<td style="border-color: red;border: 1px solid red; "><div contenteditable>CVBXCB</td>
<td><div contenteditable>HJM,HJ</td>
<td><div contenteditable>ASDFAS</td>
<td><div contenteditable>NBCN</td>
<td><div contenteditable>RTWETB</td>
<td><div contenteditable>XCVBXCB</td>
</tr>
</tbody>
</table>

<style>
table{
border: 1px solid black;
table-layout: fixed;
}
tr {
height: 28px;
width: 100px;
}
td{
border:1px solid #000;
}
</style>

关于javascript - 如何在 contenteditable 中向上或向下移动箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com