【问题标题】:Jquery confirmation dialog on asp.net button in repeater中继器中asp.net按钮上的Jquery确认对话框
【发布时间】:2013-04-17 08:09:15
【问题描述】:

我想对 asp.net 按钮单击进行 jquery 确认,该按钮位于中继器内,但下面的代码不起作用。

它甚至没有进入函数 Confirmation()

当页面加载时,confirmDialog div 是可见的,就像它是一个常规的 div 元素而不是弹出窗口这不再是问题,但其余部分保持不变

我错过了什么?

<asp:Content ID="Content2" ContentPlaceHolderID="AdminHead" runat="server">
   <script lang="javascript" type="text/javascript">
       $(function () {
           $("#confirmDialog").dialog({
               autoOpen: false,
               modal: true,
               buttons: {
                   'Confirm': function () {
                       $(this).dialog('close');
                       return true;
                   },
                   'Cancel': function () {
                       $(this).dialog('close');
                       return false;
                    }
                }
            });
            function Confirmation() { 
            alert("IN");

                $('#confirmDialog')
            .dialog('option', 'onOk', $(this).attr('href'))
            .dialog('open');
            }
        });
    </script>
</asp:Content>

<asp:Content ID="Content1" ContentPlaceHolderID="AdminContentPlaceHolder" runat="server">

<div id="confirmDialog">
    <p>ARE YOU SURE YOU WANT TO CONFIRM THIS ACTION?</p>
</div>
<asp:Repeater ID="Repeater1" runat="server">
   <HeaderTemplate>
        <div class="repeaterItem">
            <table id="AdminTable">
              .
              .
              .
    </HeaderTemplate>
    <ItemTemplate>
              .
              .
              .
              <asp:Button ID="DeleteButton" CssClass="delete" OnClick="ClickDelete" OnClientClick="Confirmation();return false;" runat="server"
                    Text="DELETE" CommandArgument="<%#(Container.DataItem as TagObject).ID %>" ClientIDMode="AutoID" />
            </th>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
              .
              .
              .
        </table></div>
    </FooterTemplate>
</asp:Repeater>
</asp:Content>

--------------------------问题已解决-------- ----------------------

我的最终代码:

    <asp:Content ID="Content2" ContentPlaceHolderID="AdminHead" runat="server">
   <script lang="javascript" type="text/javascript">
    var deleteButton;
    $(function () {
        $("#confirmDialog").dialog({
            autoOpen: false,
            modal: true,
            buttons: {
                'Confirm': function () {
                    $(this).dialog('close');
                    __doPostBack($(deleteButton).attr('name'), '');
                },
                'Cancel': function () {
                    $(this).dialog('close');
                    callback(false);
                }
            }
        });
    });
    function Confirmation() {
        deleteButton = this;
            $('#confirmDialog').dialog('open');
        }
</script>
</asp:Content>

<asp:Content ID="Content1" ContentPlaceHolderID="AdminContentPlaceHolder" runat="server">

<div id="confirmDialog">
    <p>ARE YOU SURE YOU WANT TO CONFIRM THIS ACTION?</p>
</div>
<asp:Repeater ID="Repeater1" runat="server">
   <HeaderTemplate>
        <div class="repeaterItem">
            <table id="AdminTable">
              .
              .
              .
    </HeaderTemplate>
    <ItemTemplate>
              .
              .
              .
              <asp:Button ID="DeleteButton" CssClass="delete" OnClick="ClickDelete" OnClientClick="Confirmation();" runat="server"
                    Text="DELETE" CommandArgument="<%#(Container.DataItem as TagObject).ID %>" ClientIDMode="AutoID" />
            </th>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
              .
              .
              .
        </table></div>
    </FooterTemplate>
</asp:Repeater>
</asp:Content>

【问题讨论】:

  • 你为什么用 return false OnClientClick="Confirmation();return false;" ?
  • 好吧,我已经在网上搜索了 2 天,当我发现 return false 停止 asp.net 执行默认操作但显然它对我不起作用我已经尝试过没有它和它也没有用。
  • 我猜你应该像这样使用它 OnClientClick=" return Confirmation();" ,并在确认函数中返回 true 以提交 asp 页面或 false 以反转它。
  • 它仍然不起作用,并且在开始时仍然将confirmDialog视为常规div。它不应该在开始时不可见而在点击时可见吗?
  • ok 然后,通过将 CSS 设置为display:none来隐藏 div 标签。稍后单击按钮时将其更改回来。

标签: jquery asp.net dialog repeater confirmation


【解决方案1】:

首先将确认功能从块中取出。编辑使其实际工作:

<script lang="javascript" type="text/javascript">
    $(function () {
        $("#confirmDialog").dialog({
            autoOpen: false,
            modal: true,
            buttons: {
                'Confirm': function () {
                    $(this).dialog('close');
                    return true;
                },
                'Cancel': function () {
                    $(this).dialog('close');
                    return false;
                }
            }
        });

    });
    function Confirmation() {
        alert("IN");

        $('#confirmDialog').dialog('open');
    }
</script>


<asp:Button ID="DeleteButton" CssClass="delete" OnClick="ClickDelete" OnClientClick="Confirmation();return false;"
    runat="server" Text="DELETE" CommandArgument="asd" ClientIDMode="AutoID" />

【讨论】:

  • 确认对话框现在显示,但是当点击确认 asp.net 服务器端点击事件不会触发。
  • 也许你应该检查这个线程:stackoverflow.com/questions/6049687/…
  • 谢谢我用doPostBack解决了这个问题。您提供链接的帖子给了我这个想法。
猜你喜欢
  • 2011-05-02
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
相关资源
最近更新 更多