检查与背景颜色相关的单选按钮

时间:2012-08-22 16:16:04

标签: javascript asp.net

我有2列单选按钮。选择左侧的一个,相应的右侧变为未选中,反之亦然。然后我添加了一些Javascript,以便当前选择的radiobuttons背景为蓝色,另一个为白色。这很好。然后我添加了两个按钮,一个用于检查左侧的所有单选按钮,另一个用于检查右侧的所有单选按钮。这是我的问题出现的地方。每当我使用按钮时,都会正确检查无线电按钮,但背景颜色永远不会正确显示。

示例1

当我检查第1列的无线电按钮并且其背景为蓝色时启动,然后按下按钮激活第2列,第2列的无线电按钮全部被检查,其背景闪烁蓝色片刻,然后第1列的背景保持蓝色。

示例2

启动时,我检查了第1列的无线电按钮,但没有影响其背景颜色,然后按下按钮激活第2列,第2列的无线电按钮全部被检查,其背景闪烁蓝色片刻,然后返回白色。如果我现在单击第1列的按钮(无线电变为选中状态,闪烁蓝色,返回白色),效果相同。


可能有什么问题?我想也许它可能是一个回发但是无线电检查的价值肯定会刷新,所以我不认为它。任何帮助将不胜感激。

CODE

这是用于选择列的按钮。传递函数的控件只是一个(所以单击的按钮)。由于无线电按钮是动态创建的,因此有点复杂。要点是弄清楚按下哪个按钮,然后循环通过相关的radiobuttons并检查它们,并重新绘制其父母的父母(td元素)的背景......如果这是有道理的。

function ColumnBtnSelect(control) {
  var btnNum = (control.id).substring((control.id).length - 1, (control.id).length);
  var objPart = "ctl00_ContentPlaceHolder1_GridView1_ctl";
  var objName;
  for (x = 3; x <= 15; x++) {
      if (btnNum == 1) {
         var num1 = "0" + x;
         objName = objPart + num1.substr(num1.length - 2) + "_" + ((x - 3) * 2);

         document.getElementById(objName).checked = true;
         $(document.getElementById(objName)).parent().parent().css("background-
color", "#A9D0F5");   


      }
      else {
         var num1 = "0" + x;
         objName = objPart + num1.substr(num1.length - 2) + "_" + (((x - 3) * 2) + 1);

         document.getElementById(objName).checked = true;
         $(document.getElementById(objName)).parent().parent().css("background-
color", "#A9D0F5");

      }
  }

更新

阅读完建议后,我回顾了我的代码。我有另一个javascript函数,将相应的radiobutton设置为白色,但是因为我尝试了示例2,我已经将它注释掉了,这意味着我的代码中没有任何地方,我现在将任何东西设置为白色,但即使行似乎仍然切换到了蓝色,然后转回白色。很奇怪。我还在Firebug中检查了我的CSS。所有的td元素(应该是蓝色但实际上是白色)似乎没有列出背景颜色的任何设置,也不是白色而不是蓝色。这看起来好像没有被覆盖但是可能会返回默认值?无论如何,我很难过!

2 个答案:

答案 0 :(得分:1)

您发布的代码会将所选单选按钮的背景更改为蓝色。 但它不会将未选中的单选按钮的背景颜色更改为白色。 (意思是其他一些代码正在这样做)

您发布的代码确实很好。它会将所选单选按钮的背景颜色更改为蓝色。所以问题可能是在单选按钮取消选择时将背景颜色变为白色的代码。

您究竟如何将背景颜色更改为白色? 您应该查看该代码或在此处发布该代码以获得更多帮助:D

答案 1 :(得分:0)

我怀疑按钮导致回发问题。奇怪的是复选框没有重置,但一旦我确定没有回复,就像一个魅力!