chpwd.js: Only update DOM properties if they're actually going to change.
[chopwood] / chpwd.js
index a271db4..f771d65 100644 (file)
--- a/chpwd.js
+++ b/chpwd.js
@@ -64,10 +64,15 @@ var FORMS = {};
  *     submitting a form with invalid data.
  */
 
+function update(obj, slot, value) {
+  /* Update an object slot only if we're gping to change its value. */
+  if (obj[slot] !== value) obj[slot] = value;
+}
+
 function check() {
   /* Check through the various forms to make sure they're filled in OK.  If
-    * not, set the `F-whinge' elements, and disable `F-submit'.
-    */
+   * not, set the `F-whinge' elements, and disable `F-submit'.
+   */
   var f, form, whinge;
 
   for (f in FORMS) {
@@ -75,10 +80,10 @@ function check() {
     we = elt(f + '-whinge');
     sb = elt(f + '-submit');
     whinge = form.check();
-    if (sb !== null) sb.disabled = (whinge !== null);
+    if (sb !== null) update(sb, 'disabled', whinge !== null);
     if (we !== null) {
-      we.textContent = whinge || 'OK';
-      we.className = whinge === null ? 'whinge' : 'whinge wrong';
+      update(we, 'textContent', whinge || 'OK');
+      update(we, 'className',  whinge === null ? 'whinge' : 'whinge wrong');
     }
   }