0

我编写了这个小脚本来检查用户输入的是 0 还是 1。如果还有其他内容,它会将其更改为 0:

$('.lcdnum1').keyup(function(){
    if (!($(this).val()==='0' || $(this).val()==='1')){
        $(this).val('0');
    }
});

我唯一不喜欢的是,你首先看到的是“坏”角色。如果您键入“x”,它会短暂显示“x”,然后它会消失并被 0 替换。

这是我的测试 URL,它演示了正在发生的事情: http ://sterlingmodular.com/test/plan-series-build.asp?console=PLNUno&woodtrim=TOBA&speakerplatform=SPSA&lcd4=1

我该如何修改它以使其对用户来说更流畅一些?即,“坏”字符不应该首先出现。谢谢!

4

3 回答 3

2

只需对您正在使用的事件进行一些调整,您正在使用 keyup 这意味着在释放密钥后它将运行检查。但是,如果您在释放密钥之前运行检查,您将获得所需的结果。

$('.lcdnum1').keydown(function(){
    if (!($(this).val()==='0' || $(this).val()==='1')){
        $(this).val('0');
    }
});
于 2013-08-06T18:31:49.580 回答
2

尝试使用 .keydown:

http://api.jquery.com/keydown/

Keyup 一直等到用户从键盘上释放键,这将为您提供一瞬间的输入。

于 2013-08-06T18:29:38.127 回答
1
$('.lcdnum1').keyup(function(){
    var value = $.trim(this.value);
    if (value != '1' ){
        $(this).val('0');
    }
});

演示

于 2013-08-06T18:30:23.223 回答