diff --git a/b2g/chrome/content/forms.js b/b2g/chrome/content/forms.js index f80b4eddc18..5a348560600 100644 --- a/b2g/chrome/content/forms.js +++ b/b2g/chrome/content/forms.js @@ -118,13 +118,28 @@ let FormAssistant = { case "Forms:Select:Choice": let options = target.options; + let valueChanged = false; if ("index" in json) { - options.item(json.index).selected = true; + if (options.selectedIndex != json.index) { + options.selectedIndex = json.index; + valueChanged = true; + } } else if ("indexes" in json) { for (let i = 0; i < options.length; i++) { - options.item(i).selected = (json.indexes.indexOf(i) != -1); + let newValue = (json.indexes.indexOf(i) != -1); + if (options.item(i).selected != newValue) { + options.item(i).selected = newValue; + valueChanged = true; + } } } + + // only fire onchange event if any selected option is changed + if (valueChanged) { + let event = content.document.createEvent('HTMLEvents'); + event.initEvent('change', true, true); + target.dispatchEvent(event); + } break; } },