mirror of
https://github.com/teachingtechYT/teachingtechYT.github.io.git
synced 2024-08-30 18:23:26 +00:00
Propagate reset to defaults to other forms
This commit is contained in:
@ -39,7 +39,7 @@ function resetFormToDefaults(form) {
|
||||
|
||||
setPersistedValue(element, null);
|
||||
if (element.defaultValue) {
|
||||
setFormItemValue(element, element.defaultValue);
|
||||
setFormItemValue(element, element.defaultValue, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -72,7 +72,7 @@ function getFormItemValue(element) {
|
||||
}
|
||||
}
|
||||
|
||||
function setFormItemValue(element, value) {
|
||||
function setFormItemValue(element, value, forcePropagate = false) {
|
||||
if (element.type == "radio") {
|
||||
var realValue = (value == element.value);
|
||||
|
||||
@ -97,11 +97,18 @@ function setFormItemValue(element, value) {
|
||||
element.value = value;
|
||||
}
|
||||
|
||||
element.dispatchEvent(persistChangeEvent);
|
||||
// This will trigger `persistFormValue`
|
||||
// that will propagate change into other forms
|
||||
// but still execute `onchange=` assigned to elements
|
||||
if (forcePropagate)
|
||||
element.dispatchEvent(new Event('change'));
|
||||
else
|
||||
element.dispatchEvent(persistChangeEvent);
|
||||
}
|
||||
|
||||
function persistFormValue(event) {
|
||||
// ignore cascade updates
|
||||
// ignore cascade updates generated by `setFormItemValue`
|
||||
// unless `forcePropagate=true`
|
||||
if (persistChangeEvent == event) {
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user