2015-04-23 49 views
0

这里我遇到了一个小问题我不知道我该怎么做。如何在keydown或keyup中仅第一次抑制输入值

让我解释一下:我在输入有不同的价值,当我的价值观得到我想要删除旧的价值观

例:有90输入,我想,当我打54,90是压抑,我可以写54.目前我总是删除我的输入的价值什么困扰我。所以我最终以4 ..

如果有人会有一个想法如何做这样的事情提前谢谢你!

真诚。

我tryed这一点:

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

但因为1秒后得到的计时器不是很好的答案,我要的是改变值设置为null,如果有变化,那么请不要做如果它们在小于1秒内按下任何值,则该值为null。

+0

请提供一些代码,解释你试过已经 –

+0

将是巨大的,如果你分享讨论什么相关vant代码? –

+0

我不太明白你想达到什么目的。请澄清。如果用户点击输入并且在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”

编辑:一个更优雅(和紧凑)的解决方案是

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

这似乎是完美的,我现在尝试。 –

+0

工作完全谢谢你,那很简单.. –

+0

不客气! –

0

清除它的重点,而不是当你输入:

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

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