我正在尝试创建一个输入框,一旦开始输入,输入框就会变空。 (不关注焦点)。我尝试在mootools上使用keyup事件,但流程并不是无缝的。擦除输入字段需要一些时间。这是代码
document.addEvent('domready', function(e) {
$('inputBox').addEvent('keyup', function() {
if(inputBox.value != inputBox.defaultValue){
inputBox.value = '';
$('inputBox').removeEvents('keyup');
}
});
});
最好的方法是什么才能让它表现得更好?
答案 0 :(得分: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 :(得分:1)
keyup事件在所有关键事件的最后触发,因此您可能最好不要绑定到keydown事件,这将使您的流程感觉更加无缝。