2016-03-08 58 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

相關問題