2012-03-17 87 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事件,这将使您的流感更加无缝。