在aspx页面母版页中,BlockUI javascript不在ContentPlaceholder内执行

时间:2011-11-18 20:17:24

标签: jquery asp.net

我将以下BlockUI javascript设置为在主页面的ContentPlaceholder中的aspx页面上运行。当页面加载时,当我单击ASP按钮时,javascript将触发,并显示警告框1和4,但不显示2和3.

<script type="text/javascript">
 $(document).ready(function() {
    alert('alert1');

    $('#Button3').click(function() {
    alert('alert2 button clicked');
        $.blockUI({ message: '<h1>Just a moment...</h1>' });

        alert('alert 3 It clicked!');
    });
    alert('alert4!');
 });

 </script>

我认为它与在ContentPlaceholder中找到按钮有关。

任何想法?

这是按钮,没有设置事件背后的代码。

 <td class="style17">
     <asp:Button ID="Button3" runat="server" Text="Button" />
 </td>

2 个答案:

答案 0 :(得分:1)

将选择器从$('#Button3')更改为$('#<%= Button3.ClientID %>')

顺便说一句,如果您想要阻止点击此按钮,请务必将OnClientClick="return false;"添加到此按钮

答案 1 :(得分:0)

详细说明Yuriy的答案:ASP.NET控件中的ID字段在呈现为html之前会被更改。它实际上会出现像“ctl00_contentGuts_FORMNAME___CONTAINER_FIELD”之类的东西。这有助于ASP.NET识别它,尤其是在列表控件中使用时。

Yuriy将选择器更改为$('#<%= Button3.ClientID %>')的答案应该可以正常工作。 ASP.NET的渲染引擎将看到&lt;%=&gt;部分,并使用Button的客户端ID进行渲染。

现在,您使用的是什么版本的.NET?我问,因为在.NET 4中有一种更清洁的方式。在.NET 4中,您可以在控件上设置ClientID属性,如下所示:

<asp:Button ID="Button3" ClientID="Button3" runat="server" Text="Button" />

这将确保您知道按钮ID,并且比其他方法更清晰,更易于阅读。