2015-04-23 28 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上做這件事並沒有多大意義。

相關問題