一个ASP.NET按钮单击事件不点火 [英] An ASP.NET button click event is not firing

查看:147
本文介绍了一个ASP.NET按钮单击事件不点火的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个默认为隐藏,因为它被用作一个模式弹出的jQuery UI的一个专区内的按钮。

Click事件处理程序为这个按钮永远不会被调用,但如果我复制按钮code的这个隐藏分区外,然后它工作正常。我该如何解决这个问题?

这是在code我到目前为止有:

 < D​​IV ID =对话框中的标题=通知用户>
    < D​​IV的风格=宽度:100%;高度:500px的;溢出:汽车;>
       < ASP:直放站=服务器ID =rptNotify>
          < HeaderTemplate中>
             <表>
          < / HeaderTemplate中>
          <的ItemTemplate>
             &其中; TR>
                < TD>
                   < ASP:复选框ID =chkUser=服务器选中='<%#的eval(选中)%> />
                < / TD>
                < TD>
                   < ASP:标签ID =lblUser=服务器文本='<%#的eval(全名)%>/>
                < / TD>
             < / TR>
          < / ItemTemplate中>
          < FooterTemplate>
             < /表>
          < / FooterTemplate>
       < / ASP:直放站>
    < / DIV>
    < ASP:按钮的ID =btnSaveNotifications=服务器文本=保存的OnClick =btnSaveNotifications_Click/>
 < / DIV>
 

在code显示/隐藏此格是:

 <脚本>
     //增加默认动画速度夸大效果
     $ .fx.speeds._default = 1000;

     $(函数(){
        $(#对话)。对话框({
           的AutoOpen:假的,
           显示:盲目,
           隐藏:爆炸
        });

        $(#开门红)。点击(函数(){
           $(#对话)对话框(开放)。
           返回false;
        });
     });
< / SCRIPT>
 

解决方案

这里的问题是,jQuery的UI的创建对话框的之外<形式GT; 元素,所以点击它永远不会提交表单。

要解决这个问题,而不是手动创建一个点击事件,你可以移动对话框< D​​IV> 回形式。我已经做了一个快速检索和答案这个问题涵盖了问题。

所以,你只需要进行更改:

 <脚本>
     //增加默认动画速度夸大效果
     $ .fx.speeds._default = 1000;

     $(函数(){
        VAR对话框= $(#对话)。对话框({
                        的AutoOpen:假的,
                        显示:盲目,
                        隐藏:爆炸
                     });

        //将对话框回的<形式GT;元件
        。dialog.parent()appendTo(jQuery的(形式:一是));

        $(#开门红)。点击(函数(){
           $(#对话)对话框(开放)。
           返回false;
        });
     });
< / SCRIPT>
 

I have a button within a div which is hidden by default as it is used as a modal popup by jQuery UI.

The click event handler for this button never gets called, yet if I copy the button code outside of this hidden div then it works correctly. How do I get around this problem?

This is the code I have so far:

<div id="dialog" title="Notify Users">
    <div style="width:100%; height:500px; overflow:auto;">
       <asp:Repeater runat="server"  ID="rptNotify">
          <HeaderTemplate>
             <table>
          </HeaderTemplate>
          <ItemTemplate>
             <tr>
                <td>
                   <asp:CheckBox ID="chkUser" runat="server" Checked='<%# Eval("Checked") %>' />
                </td>
                <td>
                   <asp:Label ID="lblUser" runat="server" Text='<%# Eval("FullName") %>'/>
                </td>
             </tr>
          </ItemTemplate>
          <FooterTemplate>
             </table>
          </FooterTemplate>
       </asp:Repeater>
    </div>
    <asp:Button ID="btnSaveNotifications" runat="server" Text="Save" OnClick="btnSaveNotifications_Click" />
 </div>

The code to show /hide this div is:

<script>
     // Increase the default animation speed to exaggerate the effect
     $.fx.speeds._default = 1000;

     $(function () {
        $("#dialog").dialog({
           autoOpen: false,
           show: "blind",
           hide: "explode"
        });

        $("#opener").click(function () {
           $("#dialog").dialog("open");
           return false;
        });
     });
</script>

解决方案

The problem here is that jQuery-UI creates the dialog outside of the <form> element, so clicking on it never submits the form.

To get around this, rather than create a click event manually, you can just move the dialog <div> back into the form. I did a quick search and the answer to this question already covers the issue.

So you just need to make this change:

<script>
     // increase the default animation speed to exaggerate the effect
     $.fx.speeds._default = 1000;

     $(function () {
        var dialog = $("#dialog").dialog({
                        autoOpen: false,
                        show: "blind",
                        hide: "explode"
                     });

        // Move the dialog back into the <form> element
        dialog.parent().appendTo(jQuery("form:first"));

        $("#opener").click(function () {
           $("#dialog").dialog("open");
           return false;
        });
     });
</script>

这篇关于一个ASP.NET按钮单击事件不点火的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆