【问题标题】:How to get whether the pressed key is backspace or not in JavaScript?如何在JavaScript中获取按下的键是否是退格键?
【发布时间】:2014-08-02 18:07:52
【问题描述】:

我有一个input text,它用于使用onkeyup 事件过滤表中的数据

<input id="NameFilterText" type="text" onkeyup="return filterDataRow('NameFilterText','Name'); return false;" /></td>

我在onkeyup中调用这个JavaScript函数来过滤数据

function filterDataRow(field, name) {
    var textBox = document.getElementById(field);
    var columnName = name;
    var table = document.getElementById('table1');
    var headRow = table.rows[0];
    var column = 0
    var text = textBox.value;

    for (var i = 0; i < headRow.cells.length; i++) {
        var cellName = headRow.cells[i].innerHTML;
        if (cellName == columnName) {
            column = i;
            break;
        }
    }

    for (var i = 1; i < table.rows.length; i++) {

        table.rows[i].style.display = 'table-row'; // execute only when pressing backspace

        for (var v = 0; v < text.length; v++) {
            var CurCell = table.rows[i].cells[column];
            var CurCont = CurCell.innerHTML.replace(/<[^>]+>/g, "");
            var reg = new RegExp(text + ".*", "i");

            if (CurCont.match(reg) == null) {
                table.rows[i].style.display = 'none';
            }
        }
    }
    return false;
}

如果按下的键不是backspace,我不想执行该注释行。我该怎么做?

【问题讨论】:

    标签: javascript html asp.net input onkeyup


    【解决方案1】:
    var input = document.getElementById('NameFilterText');
    var keydown=0;
    input.onkeydown = function() {
        var key = event.keyCode || event.charCode;
    
        if( key == 8 || key == 46 )
            keydown=1;
        return false;
    };
    

    现在在您的代码中 filterDataRow()

    if(keydown=1){  do your thing. and set keydown = 0 again}
    

    希望对你有帮助!

    【讨论】:

    • 放入该代码并在 if 语句中放入警报。但它没有用:( if(keydown==1){ alert('A'); keydown=0; }
    • if (window.event.keyCode == 8) table.rows[i].style.display = 'table-row';
    【解决方案2】:

    首先你需要把 onkeyup 事件改成这样:

    <input ... onkeyup="filterDataRow('NameFilterText','Name');" />
    

    然后在函数内部编辑你想要执行一次的行添加这个if语句:

    if (window.event.keyCode == 8) table.rows[i].style.display = 'table-row';
    

    【讨论】:

    • 我编辑了我的答案,按照我写的去做,它会起作用
    • 如你所说,我改变了。但它没有用.. alert('A'); if (window.event.keyCode == 8) table.rows[i].style.display = 'table-row';警报('B'); alert('A') 有效,而 alert('B') 无效
    【解决方案3】:

    我编写了一个名为 keysight 的库,它对所有键盘键都执行这种操作:

    node.addEventListener("keydown", function(event) {
        var key = keysight(event).key
        if(key === '\b') {
          console.log("We got one!")
        }
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      相关资源
      最近更新 更多