1

我正在尝试将 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";
        }
4

3 回答 3

1
<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";
}

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

于 2013-11-08T16:56:25.940 回答
0

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

 $('#' + '<%= btnStart.ClientID %>').click(function() {
start_time(this);
});
于 2013-11-09T06:24:16.263 回答
0

我发现在客户端选择 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 来选择按钮。

于 2013-11-08T16:55:31.333 回答