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

时间:2013-11-08 16:52:21

标签: javascript jquery asp.net

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

3 个答案:

答案 0 :(得分: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";
}

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

答案 1 :(得分: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选择按钮。

答案 2 :(得分:0)

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

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