2012-03-17 84 views
1

我正在嘗試使輸入框在輸入框變空之後開始輸入。 (不在焦點)。我嘗試在mootools上使用keyup事件,但流程並非無縫。擦除輸入字段需要一些時間。這裏是代碼如何在開始輸入後清空輸入字段

document.addEvent('domready', function(e) { 
$('inputBox').addEvent('keyup', function() { 
    if(inputBox.value != inputBox.defaultValue){ 
     inputBox.value = ''; 
     $('inputBox').removeEvents('keyup');  
    } 
}); 
}); 

什麼是最好的辦法,它可以表現得更好?

+3

https://github.com/DimitarChristoff/mooPlaceholder-現代HTML5的瀏覽器有'佔位符='屬性。我寫的這個插件增強了那些沒有的功能,並且使它成爲每個瀏覽器的一個功能。 – 2012-03-17 10:43:50

回答

3

正如Remon所說,你可以綁定到一個keydown事件,並且你不會有任何延遲,但是當你按下這個鍵的時候,你不能和默認值進行比較,這個值將會是相同的一旦你拿到鑰匙,價值就會改變)。

這將是與的keydown代碼:

document.addEvent('domready', function(e) { 
    $('inputBox').addEvent('keydown', function() { 
     this.set('value', '').removeEvents('keydown'); 
    }); 
}); 

如果你想爲你在你的初始代碼做了做一個比較,那麼你將需要使用KEYUP但它有一個小的延遲。

這裏是你的代碼有點優化工作:

document.addEvent('domready', function(e) { 
    $('inputBox').addEvent('keyup', function(ev) { 
     if(this.value != this.defaultValue){ 
      this.set('value', ev.key).removeEvents('keyup'); 
     } 
    }); 
});​ 

我希望這回答你的問題:)

1

keyup事件是所有關鍵事件的最後一個觸發事件,因此您可能會更好地綁定到keydown事件,這將使您的流感更加無縫。