的change
事件是完全可靠的,但只有当文本区域失去焦点,这意味着只要用户尝试点击按钮,它就会消失火灾。因此,这具有期望的结果,但用户体验差。
另一种方法是监视textarea的变化,这是开始变得棘手的地方。如果您使用基于事件的方法来执行此操作,则需要检测键盘输入,粘贴和拖放操作。并非所有浏览器都支持粘贴检测(特别是Firefox 2和所有版本的Opera都不支持),所以它已经变得棘手。更简单,更多浏览器但更脏的方法是基于轮询的方法,您可以将它与textarea的blur
事件的处理程序结合使用,以防止用户在轮询之间单击该按钮的可能性。下面,只要它是只轮询textarea的具有焦点:
var textarea = document.getElementById("your_textarea");
textarea.onfocus = function() {
var initialValue = textarea.value;
function testForChange() {
if (textarea.value != initialValue) {
// Do the button hiding stuff
}
}
textarea.onblur = function() {
window.clearInterval(timer);
testForChange();
textarea.onblur = null;
};
var timer = window.setInterval(function() {
testForChange();
}, 50);
};
我可以在逻辑上跟随是如何工作的,因此它可能会有所帮助,但不幸的是我不能使用jQuery。我将研究textarea的按键事件和onchange事件。我应该指定,但是,无论如何。 – bill 2010-09-20 06:37:20