【问题标题】:how can put a variable ID into asp.net code inside java script?如何将变量 ID 放入 java 脚本中的 asp.net 代码中?
【发布时间】:2013-07-20 20:58:03
【问题描述】:


我正在尝试启用和禁用文本框,这取决于使用 java 脚本选中的复选框,有没有办法做到这一点?
这是我的代码

<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 不理解 textBoxID 的含义! (它已在 javascript 上声明!)
我收到以下错误:

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

如果我使用实际的 ID 而不是 textBoxID2,它会很好用,但是因为我有很多复选框和很多文本框来启用和禁用无数的 javascript,这似乎不是一个好主意!
让我知道这是否可以解决并提前感谢

【问题讨论】:

  • 如果您有单独的 javascript 文件,它将不起作用,但如果您在 aspx 页面中有此代码,它将起作用。
  • 它在 aspx 文件的末尾,在内容标记之前,其中存在相同的复选框和文本框!但它仍然不起作用!编辑:这是错误 BC30451: 'textBoxID' 未声明。由于其保护级别,它可能无法访问。
  • 是 textboxID 而 textboxID2 不是实际 asp.net 控件的 id 吗?你想循环遍历所有控件并动态禁用它吗?检查这个stackoverflow.com/questions/2617629/…
  • @Devesh 感谢重播它们是服务器端 ID 我已添加 asp 文本框和复选框代码
  • 没有答案?!我只需要做这么多功能?这是最后一件事?

标签: javascript asp.net vb.net checkbox textbox


【解决方案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>

希望这对将来的某人有所帮助:-)

【讨论】:

    【解决方案2】:

    修改你的代码

    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>
    

    【讨论】:

    • 感谢您的回答,但我之前已经尝试过,但它不起作用,我已经检查了客户端源它将保持为ed1(this.checked, &amp;#39;&amp;lt;%= TB1.ClientID %&gt;&amp;#39;, &amp;#39;&amp;lt;%= TB2.ClientID %&gt;&amp;#39;); 所以它再次不起作用编辑:我认为是因为java脚本的引号...反正要退出引号,我们的代码然后重新进入吗?
    【解决方案3】:

    似乎没有答案
    所以我只是做了很多复制粘贴来创建与复选框一样多的功能,
    所以可能是这样的

    <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"/>
    

    如果有人得到除此之外的任何答案,请告诉我和其他人,谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多