ef10e3c79c1b6717ab542a576af46d84cb8ed264
chmalee
  Thu Oct 17 12:33:25 2024 -0700
Fix checkboxes not being correctly marked as changed when visiting hgTrackUi via dialog, refs #34644

diff --git src/hg/js/utils.js src/hg/js/utils.js
index 14f36fe..8c8a0f5 100644
--- src/hg/js/utils.js
+++ src/hg/js/utils.js
@@ -1013,38 +1013,38 @@
 // Exact copy of code in cheapcgi.c
 {
     return "boolshad.";
 }
 
 function getAllVars(obj,subtrackName)
 {
 // Returns a hash for all inputs and selects in an obj.
 // If obj is undefined then obj is document!
     var urlData = {};
     if (!obj)
         obj = $('document');
     var inp = $(obj).find('input');
     var sel = $(obj).find('select');
     //warn("obj:"+$(obj).attr('id') + " inputs:"+$(inp).length+ " selects:"+$(sel).length);
-    $(inp).filter('[name]:enabled').each(function (i) {
+    $(inp).filter(':not([name^="boolshad"]):enabled').each(function (i) {
         var name  = $(this).attr('name');
         var val = $(this).val();
-        if ($(this).attr('type') === 'checkbox') {
+        if ($(this).attr('type') === 'checkbox' || $(this).attr('type') === "CHECKBOX") {
             name = cgiBooleanShadowPrefix() + name;
-            val = $(this).attr('checked') ? 1 : 0;
+            val = $(this).prop('checked') ? 1 : 0;
         } else if ($(this).attr('type') === 'radio') {
-            if (!$(this).attr('checked')) {
+            if (!$(this).prop('checked')) {
                 name = undefined;
             }
         }
         if (name && name !== "Submit" && val !== undefined && val !== null) {
             urlData[name] = val;
         }
     });
     // special case the vcfSampleOrder variable because it is a hidden input type that
     // changes based on click-drag
     $(inp).filter('[name$="vcfSampleOrder"]').each(function (i) {
         var name  = $(this).attr('name');
         var val = $(this).val();
         if (name && name !== "Submit" && val !== undefined && val !== null) {
             urlData[name] = val;
         }