将ASP.NET客户端ID传递给javascript函数

Gag*_*ege 4 javascript c# asp.net webforms

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

OnBlur="javascript:setBackground(this, '<%= txtClientName.ClientID %>')"
Run Code Online (Sandbox Code Playgroud)

这是我的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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是客户端ID在字面上传递为'<%= txtClientName.ClientID%>'而不是实际值.所以,调用document.getElementById(controlID); 不起作用.

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

Jas*_*son 7

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

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

或者看到这个Stack Overflow答案:

在asp:超链接中分配声明性值的问题.错误:这不是scriptlet.将以纯文本格式输出

或使用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>
Run Code Online (Sandbox Code Playgroud)