将 .net 按钮控件 ID 传递给 JavaScript 函数

Passing a .net button control Id to a javascript function

本文关键字:JavaScript 函数 ID net 按钮 控件      更新时间:2023-09-26

我正在尝试将 asp.net 按钮控件的 id 传递给 javascript 函数。当我调用 js 函数start_time时,按钮的文本需要更改。我做了很多研究,但我仍然无法让它工作。任何帮助或建议将不胜感激。下面是我的代码。

<asp:Button ID="btnStart" runat="server" Text="OK" />
            $("#btnStart").click(function () {
            start_time("btnStart");
        });
            function start_time(controlStart) {
            var a = document.getElementById(controlStart);
            a.innerHTML = "Start";
        }
<asp:Button ID="btnStart" ClientIDMode="Static" runat="server" Text="OK" />
$("#btnStart").click(function () {
    start_time("btnStart");
});
function start_time(controlStart) {
    var a = document.getElementById(controlStart);
    a.innerHTML = "Start";
}

如果将ClientIDMode1设置为 static ,它应该可以工作。 http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(v=vs.110).aspx

我发现在客户端选择 ASP.net 控件的最简单方法是这样的......

$("[ID$=btnStart]").click(function() {
    start_time(this);
});

在此代码中,您将按钮传递到函数 start_time 中,因此您无需在 DOM 中搜索它...

function start_time(control) {
    control.innerHTML = "Start";
}

由于 ASP.net 对控件执行的 ID 前缀,因此 ID 可以在不同的上下文中因页而异。 该选择器基本上选择ID以btnStart结尾的每个元素。

还有其他方法,例如使用 ClientID,但这可能意味着将 ASP 与 JS 文件混合,具体取决于脚本实际运行的位置。

如果此脚本直接在页面上运行,而不是从包含的 js 文件运行,那么您可以执行以下操作...

$("#<%= btnStart.ClientID %>").click(function() {
    start_time(this);
});

这将通过在服务器上解析页面时给出的 ID 选择按钮。

@Archer答案几乎是正确的,但你应该像这样使用ClientID..!!

 $('#' + '<%= btnStart.ClientID %>').click(function() {
start_time(this);
});