2016-03-08 75 views
1

我正在制作测试打字速度的Web应用程序。防止在输入文本框中退格

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

问题是,preventDefault不禁止输入退格。理想情况下,由于错误的按键将永远不会输入到文本框中,因此不允许退格。如果用户习惯性地对已知错误进行退格处理,则会导致输入框中的文本不正确。这不会影响测试的结果,但这不是一个理想的情况。

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

+0

您是否确实需要*防止* backspacing?另一种方法可能是检测它何时发生,然后用输入元素的框替换“应该”在那里。 – Brandin

+0

@Brandin我不需要*,但我想。我试过了,但按下按键处理程序会在文本放在框中之前触发*,所以我不能简单地替换后退键,因为直到处理程序启动后才会删除它。 – Carcigenicate

回答

1

你需要检测onkeydown而不是onkeypress,它应该工作(在Firefox/Safari上测试)。在某些浏览器上,onkeypown仅限于可打印字符,而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> 
+0

谢谢。它最终会稍微复杂一些,因为如果你使用'onkeydown',你必须手动大写字母。我最终将两个处理程序连接起来,使用'onkeypress'作为可打印字符,'onkeydown'作为不可打印字符。似乎到目前为止按预期工作。 – Carcigenicate

相关问题