【问题标题】:Passing ASP.NET client IDs in to a javascript function将 ASP.NET 客户端 ID 传递给 javascript 函数
【发布时间】:2026-01-12 04:50:02
【问题描述】:

我需要在 ASP.net 控件事件的 onblur 事件中将客户端 ID 传递给 Javascript 函数,如下所示:

OnBlur="javascript:setBackground(this, '<%= txtClientName.ClientID %>')"

这是我的 Javascript 函数:

function setBackground(sender, controlID) {
        sender.style.backgroundColor = "#ffffff";
        var nextElement = document.getElementById(controlID);
        if ((nextElement.value == '' || nextElement.value == 'Select') && tab == true) {
            nextElement.style.backgroundColor = "#f7C059"
            tab = false;
        }
    }

问题是客户端 ID 是作为“”而不是实际值传入的。所以,调用 document.getElementById(controlID);不工作。

如何获取实际的客户端 ID 并将其传递给我的 Javascript 函数?

【问题讨论】:

    标签: c# javascript asp.net webforms


    【解决方案1】:

    您可以将 asp.net 控件更改为标准 html 元素(即,没有 runat="server")

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <input type="text" id="ClientText1" onblur="javascript:alert('<%= TextBox1.ClientID %>')" />
    

    或查看此 Stack Overflow 答案:

    problem assigning declarative values in asp:hyperlink. error: this is not scriptlet. will output as plain text

    或者使用jquery

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"> </script>
    
        <script type="text/javascript">
            $(document).ready(function () {
                $("#text2").blur(function(){alert('<%= TextBox1.ClientID %>')});
            });
        </script>
    

    【讨论】:

    • 对于第一个答案,我真的没有那个选项。我需要从后面的代码中获取这些控件。此外,使用“”可以得到完全相同的结果。
    • 明白。然后 语法会为你做吗?
    • @Gagege 不用担心... jquery 选项? (添加到答案)
    • 顺便说一下,如果你使用 jquery,你可能会用更简洁的东西替换 setBackground 函数。
    • 再一次,jQuery 来救场了。 :) 谢谢!
    【解决方案2】:

    这是来自代码隐藏吗?

    OnBlur=String.Format("javascript:setBackground(this, '{0}')", txtClientName.ClientID);怎么样

    【讨论】:

      【解决方案3】:
      <asp:TextBox ID="TextBox1" runat="server" onclick="dosomething(this)"></asp:TextBox>
      
      <script>
      function dosomething(obj)
      {
         var txtObj= document.getElementById(obj.id);
      alert (txtObj);
      }
      </script>
      

      从函数中传递这个对象,然后可以从 javascript 中获取 this.id,这将是 ClientID

      【讨论】:

        最近更新 更多