зеркало из https://github.com/mozilla/gecko-dev.git
Bug 946390 - Allow content to preventDefault() keypress events targeting <input type=number>. r=smaug
This commit is contained in:
Родитель
76574e5392
Коммит
a0201ff201
|
@ -3835,11 +3835,10 @@ HTMLInputElement::PostHandleEvent(nsEventChainPostVisitor& aVisitor)
|
|||
// the editor's handling of up/down keypress events. For that reason we
|
||||
// just ignore aVisitor.mEventStatus here and go ahead and handle the
|
||||
// event to increase/decrease the value of the number control.
|
||||
// XXX we still need to allow script to call preventDefault() on the
|
||||
// event, but right now we can't tell the difference between the editor
|
||||
// on script doing that (bug 930374).
|
||||
if (!aVisitor.mEvent->mFlags.mDefaultPreventedByContent) {
|
||||
StepNumberControlForUserEvent(keyEvent->keyCode == NS_VK_UP ? 1 : -1);
|
||||
aVisitor.mEventStatus = nsEventStatus_eConsumeNoDefault;
|
||||
}
|
||||
} else if (nsEventStatus_eIgnore == aVisitor.mEventStatus) {
|
||||
switch (aVisitor.mEvent->message) {
|
||||
|
||||
|
|
|
@ -177,6 +177,16 @@ function test() {
|
|||
expectedVal = expectedValAfterKeyEvent(key, elem);
|
||||
synthesizeKey(key, {});
|
||||
is(elem.value, expectedVal, "Test repeat of " + key + " for number control");
|
||||
|
||||
// Test preventDefault():
|
||||
elem.addEventListener("keypress", function(evt) {
|
||||
evt.preventDefault();
|
||||
elem.removeEventListener("keypress", arguments.callee, false);
|
||||
}, false);
|
||||
oldVal = elem.value = 0;
|
||||
expectedVal = 0;
|
||||
synthesizeKey(key, {});
|
||||
is(elem.value, expectedVal, "Test " + key + " for number control where scripted preventDefault() should prevent the value changing");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче