一個有效的方法是使用onkeydown
和onpaste
組合,這將在IE,火狐,Chrome瀏覽器和Safari。歌劇在這裏是奇怪的,因爲它不支持onpaste
,因此您可能必須回退到Opera的onchange
或使用DOMAttrModified
突變事件,請參閱下面的示例。
Internet Explorer還支持onpropertychange
,每當元素上的屬性發生更改時都會觸發 - 包括value
。我已閱讀,DOMAttrModified
由Opera和Safari(不知道Firefox)的支持,所以你可以使用結合IE的onpropertychange
(未經測試):
if ("implementation" in document &&
document.implementation.hasFeature('MutationEvents','2.0'))
myInput.addEventListener("DOMAttrModified", valueChanged, false);
else if ("onpropertychange" in myInput)
myInput.onpropertychange = valueChanged;
function valueChanged (evt)
{
var attr;
evt = evt || window.event;
attr = evt.attrName || evt.propertyName;
if (attr == "value")
validate();
}
'keydown'和'keypress'不一樣。選一個。如果你想要大多數關鍵事件,'keyup'會是最好的,但不需要知道密鑰何時重複(當密鑰最終被髮布時你會得到通知)。如果您需要立即識別更改,請使用'keydown'。 'keypress'忽略非打印鍵,如退格鍵。 – Zenexer 2013-09-17 06:08:37