0

我正在尝试弹出一个窗口来输入值以在回发时使用该值。

我在互联网上搜索了很多,并且能够为服务器控件构建弹出代码,下面是我的代码。

但是在构建了这么多之后,我无法从对话框“充电”按钮以及如何使用输入的值中触发按钮单击事件(执行回发)。

我尝试使用 document.getElementById("<%=Open.ClientID %>").click();from "Charge" 和 used 一样无用$(e.currentTarget).unbind('click'); e.currentTarget.click();。但非工作。

    $(document).ready(function() {  

    $('#Open').click(function(e){
                e.preventDefault();
                $( "#Open-dialog" ).dialog( "open" );
    });

 $( "#Open-dialog" ).dialog({
            modal: true,
            autoOpen: false,
            height: 255,
            width: 300,
            buttons: {
                "Charge": function() {
                     var amount = $('#Amount').val();                                                                                  
                     $( this ).dialog( "close" ); 
                     return true;               
                },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            },
    });   
});

    <form id="form1" runat="server">   
    <asp:Button id="Open" Text="Charge" runat="server" OnClick="Open_Click"/>
    <asp:Label ID="txt" Text="hi" runat="server" Visible="false"></asp:Label>
    <div id="Open-dialog" style="display: none;" title="Enter Amount">
        <label for="Amount">Amount</label>
        <input type="text" name="Amount" id="Amount" class="text ui-widget-content ui-corner-all" value="$" />
    </div>
    </form>

我无法在任何问题中找到任何清晰的图片,任何人都可以帮助我并提示如何继续..

提前致谢..

4

2 回答 2

4

打开按钮是服务器控制,您需要捕获客户端 ID,并且您需要调用 _dopostback(action, param) 以在“更改”按钮单击时应用手动回发。

<script>
        $(document).ready(function () {

            $('[id$=Open]').click(function (e) {
                e.preventDefault();
                $("#Open-dialog").dialog("open");
            });
            $("#Open-dialog").dialog({
                modal: true,
                autoOpen: false,
                height: 255,
                width: 300,
                buttons: {
                    "Charge": function () {
                        var amount = $('#Amount').val();
                         //manual do post back
                        __doPostBack('btnSave ', amount)
                        $(this).dialog("close");
                        return true;
                    },
                    Cancel: function () {
                        $(this).dialog("close");
                    }
                },
            });
        });
    </script>

在服务器端,您可以通过以下方式赶上帖子

 protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                string amount = Request["__EVENTARGUMENT"]; // parameter
                string btnSave = Request["__EVENTTARGET"]; // actionname
            }

        }

快乐的编码...

如果您在浏览器中遇到 _dopostback is undefined 错误,我想在这里向您介绍Hanselman 或者您需要获取Zip 文件并将新的浏览器文件手动放入 App_Browsers 中。

于 2013-03-07T18:54:09.690 回答
2

最后我能够找到解决方案。如果有人正在寻找带有回发的 Jquery 对话框,我会把它放在一起。

<script type="text/javascript">
    $(document).ready(function() {
        $('#Open').click(function(e){
                    e.preventDefault();
                    $( "#Open-dialog" ).dialog( "open" );
        });
     $( "#Open-dialog" ).dialog({
                modal: true,
                autoOpen: false,
                height: 255,
                width: 300,
                buttons: {
                    "Charge": function() {  
                         __doPostBack("<%= Open.UniqueID %>", $('#Amount').val()); 
                         $( this ).dialog( "close" );                                    

                    },
                    Cancel: function() {
                        $( this ).dialog( "close" );
                    }
                },
        });
    });
</script>

<form id="form1" runat="server">
<asp:Button ID="Open" Text="Charge" runat="server" OnClick="Open_Click" CausesValidation="false" />
<asp:Label ID="txt" Text="hi" runat="server" Visible="false"></asp:Label>
<div id="Open-dialog" style="display: none;" title="Enter Amount">
    <label for="Amount">
        Amount</label>
    <input type="text" name="Amount" id="Amount" class="text ui-widget-content ui-corner-all"
        value="$" />
</div>
</form>

如果遇到脚本错误

'__doPostBack' 未定义

添加

ClientScript.GetPostBackEventReference(this, string.Empty);

感谢大家在此线程中提供的宝贵意见..

于 2013-03-11T15:41:37.727 回答