Установить входное значение формы в «» не очищает пробелы
-
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