我正在使用RFID读卡器将用户认证为Web服务。读取器充当键盘,一旦读取了卡,它就会“键入”其序列号,然后输入换行符以提交html表单。

我正在尝试编写一个脚本,该脚本将检测用户是否实际上在输入字段中输入了序列号而不是扫描卡。

我当前的解决方案是使输入字段看起来更像按钮而不是字段,但这不是一个很好的解决方案。

还有更好的主意吗?

最佳答案

我使用了以下技术:检测复制/粘贴并定时两次击键之间的间隔。这是我的代码。

html

<input name="card_number" id="card_number" oninput="detectHumans();" placeholder="SCAN CARD"/>


JS

        var x = -1;
        var delta = 0;
        var count = 0;
        function detectHumans() {
            count += 1;
            if ($("#card_number").val().length != count) {
                alert('human detected');
                $("body").html('');
            }
            console.log($("#card_number").val());
            y = Date.now();
            if (x == -1) {
                x = y;
            }
            else if (delta == 0) {
                delta = y - x;
                x = y;
            }
            else{
                var new_delta = y - x;
                console.log(delta);
                console.log(new_delta);
                if (Math.abs(new_delta - delta) > 10) {
                    alert('human detected');
                    $("body").html('');
                }
                delta = new_delta;
                x = y;
            }
        }

07-28 11:53