2013-07-22 17 views
0


我想打开文本框启用和禁用取决于选中复选框与Java脚本,有无论如何做到这一点?
这里是我的代码如何将变量ID放入java脚本内部的asp.net代码中?

<script type="text/javascript"> 
    function ed1(bEnable, textBoxID, textBoxID2) { 
     document.getElementById("<%= textBoxID.ClientID %>").disabled = !bEnable 
     document.getElementById("<%= textBoxID2.ClientID %>").disabled = !bEnable 
    } 
</script> 

这里是复选框,文本框

<asp:CheckBox ID="CH0" runat="server" Font-Names="Tahoma" onclick="ed1(this.checked, 'TB1', 'TB2');" 
      Font-Size="X-Small" Style="font-size: 12px; right: 20px; color: #006699; 
      font-family: Tahoma; position: absolute; top: 25px; width: 80px;" 
      /> 
<asp:TextBox ID="TB0" runat="server" EnableViewState="False" Height="12px" MaxLength="2" 
      Style="font-size: 11px; right: 110px; vertical-align: middle; color: #0099ff; font-family: tahoma; 
      position: absolute; top: 25px; text-align: left; width: 15px; " Enabled="false" 
      Wrap="False" ValidationGroup="1234567890"></asp:TextBox> 
<asp:TextBox ID="TB1" runat="server" EnableViewState="False" Height="12px" MaxLength="2" 
      Style="font-size: 11px; right: 140px; vertical-align: middle; color: #0099ff; font-family: tahoma; 
      position: absolute; top: 25px; text-align: left; width: 15px; " Enabled="false" 
      Wrap="False" ValidationGroup="1234567890"></asp:TextBox> 

它不会因为ASP不undrestand什么textBoxID手段努力! (已宣布对JavaScript的!)
我收到以下错误:

BC30451: 'textBoxID' is not declared. It may be inaccessible due to its protection level. 

如果我把实际的ID,而不是textBoxID2它将伟大工程,但我有很多的复选框,许多文本框启用和禁用无数JavaScript似乎并不是一个好主意!
让我知道,如果这能解决的,并在此先感谢

+1

如果你有单独的JavaScript文件,它将不会工作,但如果你在aspx页面中有这个代码,它将工作。 – Devesh

+0

它位于内容标记之前的aspx文件的末尾,其中存在相同的复选框和文本框!但它不工作!编辑:这里是错误BC30451:'textBoxID'未声明。由于其保护级别,它可能无法访问。 – Sijav

+0

是textboxID和textboxID2不是实际的asp.net控件的id?你想循环所有的控制,并在飞行中禁用它?检查这一个http://stackoverflow.com/questions/2617629/how-to-get-all-elements-inside-div-that-starts-with-a-known-text – Devesh

回答

1

发现另一个意外的解决方案,我们不能把asp代码放入qoute,但我们可以把JavaScript字符串代码放入ASP代码:d:d所以它应该是这样=>

onclick='<%# "ed1(this.checked, " & TB1.ClientID & ", " & TB2.ClientID & ");" %>' 

也是Java脚本代码必须是=>

<script type="text/javascript"> 
    function ed1(bEnable, textBoxID, textBoxID2) { 
     document.getElementById(textBoxID).disabled = !bEnable; 
     document.getElementById(textBoxID2).disabled = !bEnable; 
    } 
</script> 

希望这可以帮助别人在未来:-)

0

更改代码

onclick="ed1(this.checked, 'TB1', 'TB2');" 

onclick="ed1(this.checked, '<%= TB1.ClientID %>', '<%= TB2.ClientID %>');" 

而且还可以修改你的JavaScript函数

<script type="text/javascript"> 
    function ed1(bEnable, textBoxID, textBoxID2) { 
     document.getElementById(textBoxID).disabled = !bEnable; 
     document.getElementById(textBoxID2).disabled = !bEnable; 
    } 
</script> 
+0

感谢您的回答,但我已经尝试过,它只是不会工作,我已检查客户端来源它将保持为'ed1(this.checked,' <%= TB1.ClientID%> ',' < %= TB2.ClientID%> ');'所以再次它不工作编辑:我认为这是因为Java脚本的引号......无论如何退出引号,做我们的代码,然后再输入? – Sijav

0

由于似乎没有回答这个
所以我只是在做很多的和复制粘贴的很多对作为复选框存在创造尽可能多的功能,
因此,它可能是这样的

<script type="text/javascript"> 
    function ed00(bEnable) { 
     document.getElementById("<%= TB000.clientID %>").disabled = !bEnable 
    } 
</script> 

与复选框和文本框是

<asp:CheckBox ID="CH000" runat="server" onclick="ed00(this.checked);"/> 
    <asp:TextBox ID="TB000" runat="server"/> 

如果有人得到任何其他答案,请让我和其他人知道,谢谢

相关问题