使用javascript浏览HTML表格行

亚历克斯周

我有一个HTML表,该表在每行的第一列中都有一个onclick事件,该事件将在按下时加载内容。我想使用向上和向下箭头键浏览表格,然后按Enter键,触发oncliick事件。我不需要导航单元格,只需导航行即可突出显示该行,这样您就可以知道要显示的行内容。这是我的桌子:

<table class="table_id">
    <thead style="background: #DAE6F0;">
      <th width="49"></th>
      <th width="106">Location</th>
      <th width="107">SelectionType</th>
    </thead>
    <tbody>
    @foreach (var item in Model.List)
    {
      <tr>
        <td style="width: 49px;"><a onclick=" getTeplate(@item.Id); ">Display</a></td>
        <td style="width: 120px; text-align: center">@Html.DisplayFor(modelItem => item.AdvertisementLocation)</td>
        <td style="width: 107px; text-align: center">@Html.DisplayFor(modelItem => item.AdvertisementSelectionType)</td>
      </tr>
    }
      </tbody>
  </table>

我的CSS设置为使用滚动条使表格达到设定的高度:

tbody {
      border-collapse: collapse;
      overflow: auto;
      max-height: 486px;
}

thead, tbody {
      border-collapse: collapse;
      border: 1px solid black;
      display: block;
}

th {

    border: 1px solid black;
    font-size: 1.3em;
    text-align: center;
    padding-left: 0;
}

我想用JS完成所有这些工作。安迪帮忙?

阿尔瓦罗·蒙托罗

在这里,您可以看到使用JavaScript和jQuery的解决方案注意为了方便起见,我将表从class="table_id"更改id="table_id"为):

var isTableActive = false;

// every time that there's a click, detect if it was on the table or outside of it
$(document).on("click", function(e) {
    isTableActive = $.contains(document.getElementById("table_id"), e.target);
});

// the first row will be active by default
$("#table_id tbody tr:first-child").addClass("active");

// focus the clicked row (no need to scroll because it's visible
$("#table_id tbody tr").on("click", function() {
    $("#table_id tbody tr.active").removeClass("active");
    $(this).addClass("active");
});

// when a key is pressed
$(document).on("keydown", function(e) {

    switch(e.keyCode) {
        case 38: // up
            if ($("#table_id tbody tr.active").prev().length) {
                $("#table_id tbody tr.active").removeClass("active").prev().addClass("active");
            }
            break;
        case 40: // down
            if ($("#table_id tbody tr.active").next().length) {
                $("#table_id tbody tr.active").removeClass("active").next().addClass("active");
            }
            break;
        case 13: // enter
            $("#table_id tbody tr.active").find("a").click();
            break;
    }

    // the selected element will always be visible on top
    $("#table_id tbody").scrollTop(
        $("#table_id tbody tr.active").offset().top + 
        $("#table_id tbody").scrollTop() - 
        $("#table_id tbody").offset().top
    );

    // prevent the scrolling effect if the last active element was the table
    if (isTableActive) {
        e.preventDefault();
        return false;
    }
});

(可选)您可以添加一些CSS以突出显示活动行,这将帮助您知道将触发哪个行操作:

#table_id tbody tr.active {
    background:#f0f0f0;
}

您可以看到它在此jsfiddle上运行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

浏览html表格

来自分类Dev

使用JavaScript隐藏表格行

来自分类Dev

使用JavaScript交换表格行

来自分类Dev

如何使用Capybara获取HTML表格行

来自分类Dev

使用Javascript编辑表格行

来自分类Dev

使用javascript插入新表格行

来自分类Dev

使用JavaScript追加新的表格行

来自分类Dev

MVC表格使用JavaScript突出显示行

来自分类Dev

无法使用JavaScript添加表格行

来自分类Dev

如何使用javascript显示隐藏的表格行?

来自分类Dev

使用JavaScript填充HTML表格时,该表格会闪烁

来自分类Dev

使用 Javascript 函数搜索 HTML 表格时,表格标题消失

来自分类Dev

无法使用javascript编辑html表格

来自分类Dev

PHP和HTML表格,使用tablesorter javascript

来自分类Dev

使用HTML和JavaScript绘制表格

来自分类Dev

使用 javascript 或 Jquery 重置 HTML 表格数据

来自分类Dev

使用 JavaScript 从 HTML 表格中获取数据

来自分类Dev

使用 Javascript 数组创建 HTML 表格?

来自分类Dev

解析HTML页面并在浏览器外的javascript中访问表格信息

来自分类Dev

在JavaScript中向HTML表格行添加ID

来自分类Dev

Javascript-在HTML表格中添加倍数行

来自分类Dev

从javascript中的HTML表格中删除一行

来自分类Dev

在javascript中动态增加HTML表格的行大小

来自分类Dev

HTML隐藏表格行

来自分类Dev

HTML 表格行创建

来自分类Dev

动态表格HTML Javascript

来自分类Dev

总计表格-HTML / JavaScript

来自分类Dev

使用CSS防止html表格的表格行增长(即保持固定的行高)

来自分类Dev

使用HTML表格删除CSV文件中的特定行