Javascript 如何清除某些按钮按下时的输入值?

Javascript 如何清除某些按钮按下时的输入值?,javascript,html,dom-events,Javascript,Html,Dom Events,我试图在用户按下逗号(,)时清除输入。因此,我所做的是,在(按键)上,我会检查keyCode,如果是逗号,我会通过将输入值设置为input.value='来清除输入 HTML: 如果按逗号,只需返回false即可: 类HomeComponent{ @ViewChild(“elem”)公共元素; clearInput(e:键盘事件){ 如果(例如keyCode===44){ this.element.nativeElement.value=''; 返回false; }否则{ log('不是逗号')

我试图在用户按下逗号(,)时清除输入。因此,我所做的是,在
(按键)
上,我会检查
keyCode
,如果是逗号,我会通过将输入值设置为
input.value='
来清除输入

HTML:


如果按逗号,只需返回false即可:

类HomeComponent{
@ViewChild(“elem”)公共元素;
clearInput(e:键盘事件){
如果(例如keyCode===44){
this.element.nativeElement.value='';
返回false;
}否则{
log('不是逗号');
}
}
}

jsiddle:

您需要做两个小改动:

  • 使用
    keyup
    事件获取键入的最新密钥,并将其包含在
    input
  • if
    条件中使用
    e.key===','
  • 这是工作票

    使用

    clearInput
    代码中添加
    preventDefault()
    ,如下所示:

    clearInput (e: KeyboardEvent) {
       if (e.keyCode === 44) {
          e.preventDefault();     // <-- Here
          this.element.nativeElement.value = '';
       } else {
          console.log('Not a comma');
       }
    }
    
    clearInput(e:键盘事件){
    如果(例如keyCode===44){
    
    e、 preventDefault();//您可以添加一些解释:逗号的插入将由与代码相同的“keyup”事件触发。但是浏览器必须首先运行代码,因为您的侦听器不是被动的(可能是preventDefault()或返回false),所以keypress事件将首先运行侦听器(清除该字段)然后是默认侦听器(在空字段中插入逗号)。因此,其他解决方案可能是键入或将侦听器标记为被动。-但preventDefault()最适合您的情况。
    @ViewChild( 'elem' ) public element;
    
    clearInput( e: KeyboardEvent ) {
     if ( e.keyCode === 44 ) {
        this.element.nativeElement.value = '';
     } else {
       console.log('Not a comma');
     }
    }
    
    clearInput (e: KeyboardEvent) {
       if (e.keyCode === 44) {
          e.preventDefault();     // <-- Here
          this.element.nativeElement.value = '';
       } else {
          console.log('Not a comma');
       }
    }