Bug 704879 - (6/6) Show form validation message when invalid element is focused. r=lucasr

This commit is contained in:
Margaret Leibovic 2012-03-06 11:56:44 -08:00
Родитель 3fe9ff3ff7
Коммит 202b1975a4
1 изменённых файлов: 11 добавлений и 3 удалений

Просмотреть файл

@ -2846,6 +2846,8 @@ var FormAssistant = {
Services.obs.addObserver(this, "FormAssist:Hidden", false);
Services.obs.addObserver(this, "invalidformsubmit", false);
// We need to use a capturing listener for focus events
BrowserApp.deck.addEventListener("focus", this, true);
BrowserApp.deck.addEventListener("input", this, false);
BrowserApp.deck.addEventListener("pageshow", this, false);
},
@ -2855,6 +2857,7 @@ var FormAssistant = {
Services.obs.removeObserver(this, "FormAssist:Hidden");
Services.obs.removeObserver(this, "invalidformsubmit");
BrowserApp.deck.removeEventListener("focus", this);
BrowserApp.deck.removeEventListener("input", this);
BrowserApp.deck.removeEventListener("pageshow", this);
},
@ -2887,15 +2890,20 @@ var FormAssistant = {
this._invalidSubmit = true;
// Our focus listener will show the element's validation message
let currentElement = aInvalidElements.queryElementAt(0, Ci.nsISupports);
if (this._showValidationMessage(currentElement))
currentElement.focus();
currentElement.focus();
},
handleEvent: function(aEvent) {
switch (aEvent.type) {
case "input":
case "focus":
let currentElement = aEvent.target;
this._showValidationMessage(currentElement);
break;
case "input":
currentElement = aEvent.target;
// Since we can only show one popup at a time, prioritze autocomplete
// suggestions over a form validation message