2013-05-22 32 views
0

我有2个复选框,其中只有一个或没有可能被检查。 由于我不能做回发,我试着用Javascript。 Javascript找到元素(用警报测试它)。 但价值不会改变。复选框将不会改变价值与javascript

任何想法,我怎么能用Javascript做到这一点?

的JavaScript:

function mrcAndNbbFilterChanged(mrcOrNbb) 
     { 
      alert("er in"); 
      if(mrcOrNbb == 0) 
      { 
      document.getElementById("ctl00_contentHolder_cb_mrcFilter").checked=true; 
      document.getElementById("ctl00_contentHolder_cbNoBackBilling").checked=false; 
      alert(document.getElementById("ctl00_contentHolder_cbNoBackBilling")); 
      alert("0"); 
      } 
      else 
      { 
      if(mrcOrNbb == 1) 
      { 
       alert("1"); 
       document.getElementById("cb_mrcFilter").checked=false; 
       document.getElementById("cbNoBackBilling").checked=true; 
      } 
      } 
     } 

ASP代码:

<asp:CheckBox ID="cb_mrcFilter" runat="server" Text="Only MRC" OnClick="mrcAndNbbFilterChanged(0)" /> 
<asp:CheckBox ID="cbNoBackBilling" runat="server" Text="No back billing" OnClick="mrcAndNbbFilterChanged(1)" />  
+0

这应该工作。你可以创建一个小提琴来复制? –

+1

为什么不只是使用复选框列表(或单选按钮列表我更好,因为这限制了用户只有一个选择),也有没有理由你不能做回发? – jgok222

+0

@ØHankyPankyØ我会尽力做到这一点。但是,如果它在小提琴中工作,我不会感到惊讶 – Freddy

回答

4

ASP.NET应用于的ctl00_ -esque字符串标识使用时,ASP控制,确保它们是唯一的。您可以使用获得ASP修饰的ID值:

document.getElementById("<%= cb_mrcFilter.ClientID %>").checked=false; 
document.getElementById("<%= cbNoBackBilling.ClientID %>").checked=true; 

此外,作为一个侧面说明,您可以使用else if { ... },而不是else { if { ... } }时只处理一个选择:

if(mrcOrNbb == 0) { 
    ... 
} 
else if(mrcOrNbb == 1) { 
    ... 
} 
+0

对于'else if'的建议,但我想知道如果一个'else'会在这种情况下就够了) –

+0

确实是这个ID,谢谢! – Freddy