将表单输入值设置为“”不清除空间

发布于 2024-10-01 00:46:40 字数 1243 浏览 6 评论 0原文

我正在尝试用 JavaScript 实现命令行模拟器。我希望空格键键充当Enter键(提交,然后清除命令行)。

在这篇文章中,让我们将 space 表示为下划线,因此 _ 表示 [space]

如果我输入 banana_ > 然后,在捕获按键后,我调用 input.value= "",它会清除 banana,但不会清除剩余的 space

我测试了 onkeydownonkeypress,但似乎没有任何区别。实际上, 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>

I am trying to implement a command line emulator in JavaScript. I want the Spacebar key to act as Enter (submit, then clear the command line).

In this post, let's represent a space as an underscore, so _ means [space]:

If I enter banana_ and then, after catching the keypress, I call input.value= "", it clears banana, but not the remaining space.

I tested both onkeydown and onkeypress, but it doesn't seem to make any difference. Actually, onkeyup does the trick, see my answer below!

This is my code. Could someone please help me remove the extra space...

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

羅雙樹 2024-10-08 00:46:40

请改用 onkeyup

document.onkeyup = keyCheck;

这样,事件发生在将字符添加到元素的值之后。

尝试一下: http://jsbin.com/esacu3

Use onkeyup instead.

document.onkeyup = keyCheck;

This way the event occurs after the character has been added to the value of the element.

Try it out: http://jsbin.com/esacu3

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文