Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果输入太快,js会丢失字符_Javascript - Fatal编程技术网

Javascript 如果输入太快,js会丢失字符

Javascript 如果输入太快,js会丢失字符,javascript,Javascript,好的,我已经完成并开始工作了,我已经删除了一些我必须帮助阅读的问题 我正在对输入到文本框(id='user\u pin\u code')的字符进行模糊处理,使其根据字符数显示为'*'或'***'。 用于输入PIN码 第一部分接受输入的字符,并用“*”星号替换每个字符。所以一个6字符的PIN将显示“******” 到目前为止一切都很好,不管我打字有多快 下一部分获取输入的实际字符,并用输入的实际字符填充另一个文本框(id='PINcode')。 问题是,如果我打字很快,就会漏掉一些。 因此,“wx

好的,我已经完成并开始工作了,我已经删除了一些我必须帮助阅读的问题

我正在对输入到文本框(id='user\u pin\u code')的字符进行模糊处理,使其根据字符数显示为'*'或'***'。 用于输入PIN码

第一部分接受输入的字符,并用“*”星号替换每个字符。所以一个6字符的PIN将显示“******” 到目前为止一切都很好,不管我打字有多快

下一部分获取输入的实际字符,并用输入的实际字符填充另一个文本框(id='PINcode')。 问题是,如果我打字很快,就会漏掉一些。 因此,“wxymdo”可以输入为“wxmd”

<script>
$(document).ready(function(e) {

var actualTextEntered = ""; 


    $("#user_pin_code").keyup(function(e) {
                       
        var x = document.getElementById("user_pin_code").value;
                
        actualTextEntered += x.replace(/\\*/g,"");
                
        addEventListener('keydown', function(event) {
            const key = event.key; // const {key} = event; ES6+
            if ( key === "Backspace" ) {
                // Do something
                actualTextEntered = ''; 
                x='';
            }
        });
        
        
        
        document.getElementById("user_pin_code").value = "";
        
        for (var i=0;i<actualTextEntered.length;i++)
        {   
        document.getElementById("user_pin_code").value += "*";
        document.getElementById("PINcode").value = actualTextEntered;
        }   
        
        
    });

});

$(文档).ready(函数(e){
var actualTextEntered=“”;
$(“用户密码”).keyup(函数(e){
var x=document.getElementById(“用户密码”).value;
actualTextEntered+=x.replace(/\\*/g,“”);
addEventListener('keydown',函数(事件){
const key=event.key;//const{key}=event;ES6+
如果(键==“退格”){
//做点什么
实际扩展中心=“”;
x='';
}
});
document.getElementById(“用户密码”).value=“”;

对于(var i=0;i而言,问题在于keyup事件如何工作,它往往无法捕获一些非常快速的输入。正如onmousemove的工作方式一样,当鼠标移动非常快时,某些元素将被跳过


为什么不使用input type=“password”或者我认为使用oninput事件可以解决您的问题。

问题在于keyup事件如何工作,它往往无法捕获一些非常快速的输入。就像onmousemove的工作方式一样,当鼠标移动非常快时,某些元素将被跳过


为什么不使用input type=“password”或者我认为使用oninput事件对您来说是一种解决办法。

为什么不使用
?“我应该用另一种方式来看待这个问题吗?”是的,您应该尽可能保持不受黑客攻击–这对于可靠性和可访问性很重要。您的回答是:“无论用户输入什么,我都想屏蔽窥探者的眼睛”——这只是一个好主意吗?这些是一次性代码吗?如果两者都是,我会将其作为可见文本保留;这是相当标准的。但为什么它像银行PIN一样保密呢?“给我发送一个新PIN”link让它听起来像是昙花一现的,甚至可能是第二个因素。非常确定让你陷入困境的是
setTimeout
函数,你应该让每个函数调用先等待上一个函数调用完成,然后再调用下一个函数。你所做的不是一个好的实践,但是如果你坚持,为tim实现一个任务队列Out函数如果删除
键控
处理程序中的
控制台.log
行,问题是否仍然存在?控制台上的日志记录被阻塞,可能会缓慢。为什么不使用
?“我应该以不同的方式查看此问题?”是的,你应该尽量保持不被黑客攻击——这对可靠性和可访问性很重要。你的回答是“我想屏蔽用户可能进入的任何窥探的眼睛”–这是一个很好的选择吗?这些是一次性密码吗?如果两者都是,我会将其作为可见文本保留;这是很标准的。但为什么它像银行PIN一样保密?即“给我发送一个新PIN”link让它听起来像是昙花一现的,甚至可能是第二个因素。非常确定让你陷入困境的是
setTimeout
函数,你应该让每个函数调用先等待上一个函数调用完成,然后再调用下一个函数。你所做的不是一个好的实践,但是如果你坚持,为tim实现一个任务队列eout功能如果删除
keyup
处理程序中的
console.log
行,该问题是否仍然存在?在控制台上的日志记录被阻塞,可能会缓慢移动。