如何在keydown或keyup中第一次抑制输入值

时间:2015-04-23 10:26:42

标签: jquery

在这里,我遇到了一个小问题,我不知道自己该怎么做。

让我解释一下:我在输入中有不同的值,当我输入值时,我想删除旧值

例如:输入中有90个,我希望当我达到54时,90是抑制,我可以写54.目前我总是删除输入的值,这让我感到困扰。所以我最终得到了4 ..

如果有人想知道如何做这样的事情,请提前感谢你!

真诚。

我试过这个:

$j(this).keydown(function() {
    clearInterval(timer);
        timer = setTimeout(function() {
            return false;
        },1000);
    $j(this).val('').change();
}); 

但是计时器并不是一个好的答案,因为它在1秒后进入,我想要的是如果有变化则将值更改为null然后如果它们没有使值变为null任何不到1秒的任何东西。

2 个答案:

答案 0 :(得分:0)

在焦点上清除它而不是在键入时清除它:

$j(this).focus(function() {
    $(this).val('');
}); 

现在每次点击它都会清除,但每次输入时都不会清除。如果您尝试清除第一次点击,那么我们如何知道您何时需要再次清除并清除它?在keydown上做这件事并没有多大意义。

答案 1 :(得分:0)

以下解决了您的问题(如果我理解您正确的行为)

var firstDown = true;
$j('#test').focus(function(){
   firstDown = true;
});
$j('#test').keydown(function() {
   if(firstDown){
       $j(this).val('');
       firstDown = false;
   }
}); 
$j('#test').blur(function(){
   firstDown = true; // not necessary
});
  1. ' 90'在输入中
  2. 用户点击输入(focus) - > 90留在输入
  3. 用户开始输入。按下第一个键后,输入就会被清除
  4. 用户继续打字(' 54'),输入不再清除
  5. 用户点击输入(blur)之外 - >输入保持' 54'
  6. 编辑:更优雅(紧凑)的解决方案

    $j('#test').focus(function(){
        $j(this).keydown(function() {
            $j(this).val('');
            $j(this).unbind('keydown');
        });
    });