Установить входное значение формы в «» не очищает пробелы

StackOverflow https://stackoverflow.com/questions/4125510

  •  29-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь реализовать эмулятор командной строки в JavaScript. Я хочу Spacebar Ключ, чтобы действовать как Enter (отправьте, затем очистите командную строку).

В этом посте давайте представляем space как подчеркивание, так что _ означает [space]:

Если я войду banana_ А затем, после того, как я поймал клавиш, я звоню input.value= "", это очищает banana, но не оставшиеся space.

Я проверил оба onkeydown и onkeypress, но, похоже, это не имеет никакого значения. На самом деле, onkeyup Сделает трюк, см. Мой ответ ниже!

Это мой код. Может кто -нибудь, пожалуйста, помочь мне снять дополнительное пространство ...

<html><head>

<script type="text/javascript">  

    document.onkeypress = keyCheck;  

    function keyCheck( e ) {  
        var keyID = (window.event) ? event.keyCode : ( e.keyCode ? e.keyCode : e.charCode );  
        switch(keyID) {  
            case 32: //spacebar  
                alert( "space pressed, clearing..." );  
                document.getElementById( "cli" ).value="";  
                break;  
            default:  
                //do something else  
                break;  
            } 
        }  
</script>  
</head>  

<body>
  <form name="frm" id="frm" onSubmit="go( this )">
  <input name="cli" id="cli" type="text" name="cmd" size="122">
</body>

</html>
Это было полезно?

Решение

Использовать onkeyup вместо.

document.onkeyup = keyCheck;

Таким образом, событие происходит после символ был добавлен к значению элемента.

Попробуйте: http://jsbin.com/esacu3

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top