如何在Javascript或Jquery中设置侦听器"backspace press"事件?



我有一个按钮,如果输入中分别有或没有文本,它就会被启用或禁用,如下面的代码片段所示:

var input = document.getElementById('myInput');
var btn = document.getElementById('myButton');
$(input).on('keyup', function(){
if((input.value != null) && (input.value != ''))
$(btn).removeClass('btnDisabled');
else
$(btn).addClass('btnDisabled');
});

使用keyup事件,它在我的Android 6.0.1智能手机上的应用程序中运行良好。但出于某种原因,在装有Android 4.4.2的平板电脑上,如果按下退格键直到输入开始,擦除所有文本值,则该按钮仍处于启用状态。我研究了这个问题,但我仍然不确定WebView版本是否会干扰这个问题。我想是的。

我使用了其他代码片段来查看事件是否由"退格"按钮触发,如下所示:

$(input).on('keydown', function(event){ //I tried keyup, keydown and keypress
var key = event.keyCode || event.charCode;
console.log("keydown " + key, "length " + input.value.length);
//if(key == 8 && input.value.length == 1) $(btn).addClass('btnDisabled');
});

通过这个测试,我发现退格不会触发事件,变量key总是等于0。

当输入为空时,我需要禁用该按钮。我哪里错了?

现在,我感谢那些提供帮助的人!:D

您可以使用另一个事件:input

https://developer.mozilla.org/en-US/docs/Web/Events/input

<input><select><textarea>元素的值发生更改时,DOM输入事件被同步激发。

在这种情况下,请更改

$(input).on('keydown', 

$(input).on('input', 

另请参阅:https://caniuse.com/#search=input

最新更新