3

这不起作用,我不明白为什么,我已经在 W3schools 上尝试过该代码并且有效,我认为问题可能是参考或其他东西,我是 ASP.NET 的新手。

ASP 代码(母版页)

<script src="./Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">

    $(document).ready(function () {
        $("#bt_insertar").click(function () {
            alert("Handler for .click() called.");
        });
    });
</script>

<asp:ContentPlaceHolder id="head" runat="server"></asp:ContentPlaceHolder>

索引.aspx

<td class="style4">
    <asp:Button ID="bt_insertar" runat="server" Text="Insertar" Width="71px" 
    onclick="bt_insertar_Click" style="height: 26px" />
</td>
4

3 回答 3

5

默认情况下,ID您提供的runat="server"控制权不是id最终在 DOM 元素上的。ClientID您可以从服务器端控件对象的属性中获取 ASP.Net 生成的 ID 。例如,改变:

$("#bt_insertar").click(...

$("#<%= bt_insertar.ClientID%>").click(...

...如果该代码在 ASP.Net 解析的页面中(而不是外部 JavaScript 文件)。

从 ASP.Net 4 开始,您可以通过ClientIDMode属性控制此行为。例如,如果您使用Static模式 ( control.ClientIDMode = CLientIDMode.Static;),那么ID实际上是按原样传递的。但是默认值ClientIDModePredictable,它会修改ID你使用的。

于 2013-07-13T17:16:17.163 回答
1

要将 jquery 函数绑定到 Asp.net Server 控件,您必须以这种方式编写代码。

<script type="text/javascript">

  $(document).ready(function () {
      $('#<%= bt_insertar.ClientID %>').click(function () {
          alert("Handler for .click() called.");
      });


  });
于 2013-07-13T17:43:22.553 回答
0

几点:

  1. 在您的 JQuery 包含语句中,src 应该src="../Scripts/jquery-1.4.1.js"src="./Scripts/jquery-1.4.1.js"
  2. 您实际上不需要在事件中绑定点击事件,document.ready而是可以包含OnClientClick="bt_insertar_Click();"在您的事件中asp:Button

然后你可以定义你的function bt_insertar_Click()

    <script type="text/javascript">

    function bt_insertar_Click() {
       alert("Handler for .click() called.");
    }
    </script>

为您的网页使用单独的 .js 文件是一种更好的编程实践,这样您就可以将所有相关的 js 函数移动到该 js 文件中,然后像使用 jquery 文件一样包含它。

于 2013-07-13T18:32:00.427 回答