Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Html 防止输入文本框中出现退格_Html_Javascript Events_Input Field - Fatal编程技术网

Html 防止输入文本框中出现退格

Html 防止输入文本框中出现退格,html,javascript-events,input-field,Html,Javascript Events,Input Field,我正在制作一个测试打字速度的Web应用程序 它为用户提供了一些要键入的文本和一个要键入的输入框。如果用户键入错误的密钥,我将在生成的密钥事件上使用preventDefault,以防止在输入框中输入错误字符(而是向用户显示错误消息) 问题是,preventDefault不能阻止输入退格。理想情况下,由于文本框中永远不会输入错误的按键,因此允许退格是没有意义的。如果用户习惯性地在感知到的错误上单击backspace,则会导致输入框中的文本变得不正确。这不会影响测试结果,只是不是一个理想的情况 如何防

我正在制作一个测试打字速度的Web应用程序

它为用户提供了一些要键入的文本和一个要键入的输入框。如果用户键入错误的密钥,我将在生成的密钥事件上使用
preventDefault
,以防止在输入框中输入错误字符(而是向用户显示错误消息)

问题是,
preventDefault
不能阻止输入退格。理想情况下,由于文本框中永远不会输入错误的按键,因此允许退格是没有意义的。如果用户习惯性地在感知到的错误上单击backspace,则会导致输入框中的文本变得不正确。这不会影响测试结果,只是不是一个理想的情况


如何防止HTML5输入元素中“text”类型的退格

您需要检测onkeydown而不是onkeypress,它应该可以工作(在Firefox/Safari上测试)。在某些浏览器上,onkeypress仅限于可打印字符,而onkeydown用于所有按键事件

<!doctype html>
<html lang="en">
    <head>
        <script type="text/javascript">
            function no_backspaces(event)
            {
                backspace = 8;
                if (event.keyCode == backspace) event.preventDefault();
            }
        </script>
    </head>
    <body>
        <input id="typeHere" onkeydown="no_backspaces(event);"/>
    </body>
</html>

函数无退格(事件)
{
退格=8;
if(event.keyCode==backspace)event.preventDefault();
}

您确实需要防止退格吗?另一种方法可能是检测何时发生,然后用“应该”替换输入元素的框。@Brandin我不需要,但我愿意。我试过了,但是按键处理程序在文本放入框之前启动,所以我不能简单地替换空格键,因为它在处理程序启动之后才会被删除。谢谢。但它最终会稍微复杂一些,因为如果使用
onkeydown
,则必须手动将字母大写。我最后附加了两个处理程序,对可打印字符使用
onkeypress
,对不可打印字符使用
onkeydown
。到目前为止,似乎工作正常。