Javascript 替换输入上的按键

标签 javascript jquery string input replace

所以我尝试在输入字段中将按键“K”替换为“Z”。 我成功地做到了但是有一点延迟,使用户看到“K”变成了“Z”。

这是我的代码:

        function prinner (event)
        {
          document.getElementById("txx").innerHTML= event.key; //Displays key pressed on screen by changing text element.
           if(event.keyCode == 32){
               // User has pressed space
               document.getElementById("txx").innerHTML= "Space";
           }
           if (event.key=="k") // Trying to replace this with z.
           {
            var curval = $("#namaye").val(); //namaye is the ID of the input field.
            var nval = curval.slice(0,(curval.length-1))+"z";
            $("#namaye").val(nval);

           }
        }

       $("#namaye").keyup(prinner);

有人知道更好的方法来实现这一点而不会造成延迟吗?

最佳答案

使用 keydown 而不是 keyup 并取消事件,这样击键实际上不会被打印:

function prinner (event) {

  // Displays key pressed on screen by changing text element.
  document.getElementById("txx").innerHTML= event.key; 
  
  if(event.keyCode == 32){
    // User has pressed space
    document.getElementById("txx").innerHTML= "Space";
  }
  
  // Trying to replace this with z.
  if (event.key=="k") {
  
    var curval = $("#namaye").val(); //namaye is the ID of the input field.
    var nval = curval +"z";
    $("#namaye").val(nval);
    
    // Cancel the event
    event.preventDefault();
    event.stopPropagation();
  }
}

$("#namaye").keydown(prinner);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="namaye">
<p id="txx"></p>

关于Javascript 替换输入上的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44209666/

相关文章:

javascript - jQuery 迭代表列和行来构建列表

javascript - 带有 `Please Wait` 标签的 Ajax 组合框用于加载数据

Python,在列表中的每个项目上 append 字符串

cocoa-touch - 将 CGPoint 转换为字符串的问题

string - KMP 算法中使用的 Failure 函数是如何工作的?

javascript - 如何在 javascript 的禁用按钮上启用工具提示?

javascript - 将其放入函数JS

jquery - 设置水平滚动条固定位置在显示屏底部

javascript - 通过 Javascript 调用 SQLite 时 Firefox 出错

javascript - JS,函数返回 undefined 而不是 true 或 false