8cf47d3a9907d12655c55d21478a998884e6afd9 tdreszer Wed Jul 6 13:51:23 2011 -0700 IE was creating 2 rows instead of 1 when the plus button was pressed in trackSearch. diff --git src/hg/js/utils.js src/hg/js/utils.js index 0882f5a..da31e3d 100644 --- src/hg/js/utils.js +++ src/hg/js/utils.js @@ -2144,91 +2144,96 @@ {// Called when configuring a composite or superTrack var thisForm = $('form#searchResults'); $(thisForm).attr('action',"../cgi-bin/hgTrackUi?hgt_tSearch=Search&g="+name); $(thisForm).find('input.viewBtn').click(); } function findTracksMdbSelectPlusMinus(obj, rowNum) { // Now [+][-] mdb var rows with javascript rather than cgi roundtrip // Will remove row or clone new one. Complication is that 'advanced' and 'files' tab duplicate the tables! var objId = $(obj).attr('id'); rowNum = objId.substring(objId.length - 1); if ($(obj).val() == '+') { var buttons = $("input#plusButton"+rowNum); // Two tabs may have the exact same buttons! if (buttons.length > 0) { + var table = null; $(buttons).each(function (i) { var tr = $(this).parents('tr.mdbSelect')[0]; if (tr != undefined) { + table = $(tr).parents('table')[0]; if(newJQuery) { var newTr = $(tr).clone(); var element = $(newTr).find("select.mdbVar")[0]; if (element != undefined) $(element).attr('selectedIndex',-1); element = $(newTr).find("td[id^='hgt_mdbVal']")[0]; if (element != undefined) $(element).empty(); element = $(newTr).find("td[id^='isLike']")[0]; if (element != undefined) $(element).empty(); $(tr).after( newTr ); } else $(tr).after( $(tr).clone() ); } - findTracksMdbSelectRowsNormalize($(tr).parents('table')[0]); // magic is in this function }); + if (table) + findTracksMdbSelectRowsNormalize(table); // magic is in this function return false; } } else { // == '-' var buttons = $("input#minusButton"+rowNum); // Two tabs may have the exact same buttons! if (buttons.length > 0) { var remaining = 0; $(buttons).each(function (i) { var tr = $(this).parents('tr')[0]; var table = $(tr).parents('table')[0]; if (tr != undefined) $(tr).remove(); remaining = findTracksMdbSelectRowsNormalize(table); // Must renormalize since 2nd of 3 rows may have been removed }); if (remaining > 0) { removeNum = remaining + 1; // Got to remove the cart vars, though it doesn't matter which as count must not be too many. setCartVars( [ "hgt_mdbVar"+removeNum, "hgt_mdbVal"+removeNum ], [ "[]","[]" ] ); } findTracksClearFound(); // Changing values so abandon what has been found return false; } } return true; } function findTracksMdbSelectRowsNormalize(table) { // Called when [-][+] buttons changed the number of mdbSelects in findTracks\ // Will walk through each row and get the numberings of addressable elements correct. + //var table = $('table#'+tableId); if (table != undefined) { var mdbSelectRows = $(table).find('tr.mdbSelect'); var needMinus = (mdbSelectRows.length > 2); $(table).find('tr.mdbSelect').each( function (ix) { var rowNum = ix + 1; // Each [-][+] and mdb var=val pair of selects must be numbered // First the [-][+] buttons var plusButton = $(this).find("input[value='+']")[0]; if (plusButton != undefined) { $(plusButton).attr('id',"plusButton"+rowNum); - $(plusButton).unbind('click') - $(plusButton).click(function() { return findTracksMdbSelectPlusMinus($(plusButton), rowNum); }); + // rebinding click appears to be not needed and screws up IE as well. + //$(plusButton).unbind('click') + //$(plusButton).click(function() { return findTracksMdbSelectPlusMinus($(plusButton), rowNum); }); var minusButton = $(this).find("input[value='-']")[0]; if (needMinus) { if (minusButton == undefined) { $(plusButton).before("<input type='button' id='minusButton"+rowNum+"' value='-' style='font-size:.7em;' title='delete this row' onclick='return findTracksMdbSelectPlusMinus(this,"+rowNum+");'>"); minusButton = $(this).find("input[value='-']")[0]; } else { $(minusButton).attr('id',"minusButton"+rowNum); $(minusButton).unbind('click'); $(minusButton).click(function() { return findTracksMdbSelectPlusMinus($(minusButton), rowNum); }); } } else if (minusButton != undefined) $(minusButton).remove(); } // Now the mdb var=val pair of selects var element = $(this).find("select[name^='hgt_mdbVar']")[0];