Javascript 在选择列表框后更新模态中的文本框

Javascript 在选择列表框后更新模态中的文本框,javascript,c#,asp.net,webforms,Javascript,C#,Asp.net,Webforms,我在引导模式中有一个列表框和一个文本框。我需要用列表框中的选定值更新文本框。我的问题是为了从列表框中获取seleccted值,我需要进行自动回发。回发导致模态关闭 以下是完整的模态代码: <div id="modalBillOLMapping" class="modal colored-header" style="display:none" > <div class="md-content"> <div class="modal-head

我在引导模式中有一个列表框和一个文本框。我需要用列表框中的选定值更新文本框。我的问题是为了从列表框中获取seleccted值,我需要进行自动回发。回发导致模态关闭

以下是完整的模态代码:

 <div id="modalBillOLMapping" class="modal colored-header" style="display:none" >
    <div class="md-content">
        <div class="modal-header">
        <button type="button" data-dismiss="modal" aria-hidden="true" class="close md-close"><i class="icon s7-close"></i></button>
        <h3 class="modal-title">
            <asp:Label ID="Label1" runat="server" Text="Field Mapping"></asp:Label>
        </h3>
    </div>   
    <div class="modal-body form" style="padding: 0px!important;">
        <asp:UpdatePanel runat="server">
            <ContentTemplate>
        <div class="panel panel-alt3 panel-transparent">
            <div class="panel-heading panel-heading-cg">
                <button runat="server" type="button" id="btnSaveOLMapping" class="btn btn-alt3" onclick="javascript:CloseModal('modalBillOLMapping');" data-dismiss="modal" onserverclick="btnSaveMapping_ServerClick"><i class="icon s7-check"></i>&nbsp;Save</button>
                <button type="button" class="btn btn-alt3 md-close"><i class="icon s7-close"></i>&nbsp;Cancel</button>
            </div>
            <div class="panel-body" style="height:300px">
                <asp:UpdatePanel runat="server">
                    <ContentTemplate>
                        <div class="row" style="padding-bottom:5px">
                            <div class="col-xs-2">
                                <asp:Label runat="server" ID="lblBillOLMapName" CssClass="text-danger"  ToolTip="Name of the current mapping">Map Name</asp:Label>
                            </div>
                            <div class="col-xs-4">
                                <asp:TextBox runat="server" ID="txtBillOLMapName"></asp:TextBox>
                            </div>
                        </div> 
                        <table style="width:100%">
                            <thead>
                                <tr><th style="width:25%">Quickbooks Field</th>
                                    <th style="width:25%">Charge Item Field</th>
                                    <th style="width:25%">Static Value</th>
                                    <th style="width:25%">Concatenated Value</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td><asp:Label runat="server" ID="lblBillOLDocNumber" CssClass="text-danger" ToolTip="Mandatory Field - Bill reference number" Width="200px">DocNumber</asp:Label></td>
                                    <td><asp:DropDownList ID="ddlBillOLDocNumber" runat="server" AutoPostBack="false" Width="250px" ></asp:DropDownList></td>
                                    <td><asp:TextBox runat="server" ID="txtStaticBillOLDocNumber" Height="25px" Width="250px"></asp:TextBox></td>
                                    <td>
                                        <div class="input-group">
                                            <span class="input-addon input-group-btn">
                                                <asp:TextBox ID="txtConBillOLDocNumber" runat="server" Width="250px" Height="22px" ClientIDMode="Static"></asp:TextBox>

                                                    <a class="btn btn-primary dropdown-toggle toggle-menu" data-toggle="dropdown" href="#" style="height:22px">
                                                    <i class="icon s7-angle-down" style="font-size:x-large"></i>
                                                </a>
                                                <ul class="dropdown-menu">
                                                    <li>
                                                        <asp:ListBox runat="server" ID="lbConBillOLDocNumber" ClientIDMode="Static"></asp:ListBox>
                                                    </li>

                                                </ul>
                                            </span>
                                        </div>
                                    </td>
                                </tr>
                                <tr>
                                    <td><asp:Label runat="server" ID="lblBillOLTxnDate" ToolTip="The date of the bill, if you leave out of the mapping, the current date in Quickbooks Online will be used.">Transaction Date</asp:Label></td>
                                    <td><asp:DropDownList ID="ddlBillOLTxnDate" runat="server" AutoPostBack="false" Width="250px"></asp:DropDownList></td>
                                    <td><asp:TextBox runat="server" ID="txtStaticBillOLTxnDate" Width="250px" Height="22px"></asp:TextBox></td>
                                    <td><div class="input-group" >
                                        <span class="input-addon input-group-btn">
                                        <asp:TextBox runat="server" ID ="txtConBillOLTxnDate" Width="250px" Height="22px"></asp:TextBox>
                                            <a class="btn btn-primary dropdown-toggle toggle-menu" data-toggle="dropdown" href="#" style="height:22px">
                                            <i class="icon s7-angle-down" style="font-size:x-large"></i>
                                                </a>
                                                <ul class="dropdown-menu">
                                                    <li>
                                                        <asp:ListBox runat="server" ID="lbConBillOLTxnDate" ClientIDMode="Static"></asp:ListBox>
                                                    </li>

                                                </ul>
                                        </span>
                                        </div>
                                    </td>
                                </tr>
                                <tr>
                                    <td><asp:Label runat="server" ID="lblBillOLPrivateNote" ToolTip="User entered, organization-private note about the transaction. This note will not appear on the transaction records by default.">Private Note</asp:Label></td>
                                    <td><asp:DropDownList ID="ddlBillOLPrivateNote" runat="server" AutoPostBack="false" Width="250px"></asp:DropDownList></td>
                                    <td><asp:TextBox runat="server" ID="txtStaticBillOLPrivateNote" Width="250px" Height="22px"></asp:TextBox></td>
                                    <td><div class="input-group">
                                        <span class="input-addon input-group-btn">
                                            <asp:TextBox runat="server" ID="txtConBillOLPrivateNote" Width="250px" Height="22px"></asp:TextBox>
                                            <a class="btn btn-primary dropdown-toggle toggle-menu" data-toggle="dropdown" href="#" style="height:22px">
                                            <i class="icon s7-angle-down" style="font-size:x-large"></i>
                                                </a>
                                                <ul class="dropdown-menu">
                                                    <li>
                                                        <asp:ListBox runat="server" ID="lbConBillOLPrivateNote"></asp:ListBox>
                                                    </li>

                                                </ul>
                                        </span>
                                        </div></td>
                                </tr>
                            </tbody>
                        </table>

                        <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineDescription" ToolTip="Description for the expense line">Line Description</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineDescription" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineAmount" ToolTip="Amount of Expense">Line Amount</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineAmount" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineCustomerRef" ToolTip="Customer name associated with the expense">Line Customer Ref</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineCustomerRef" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineAccountClass" ToolTip="Class associated with the expense">Line Account Class</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineAccountClass" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineAccountRef" ToolTip="Name of the expense account">Line Account Ref</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineAccountRef" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLVendorRef" CssClass="text-warning" ToolTip="Mandatory - Full name of the vendor">Line Account Ref</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLVendorRef" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLAPAccount" ToolTip="The Accounts Payable account the purchase is credited">AP Account</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLAPAccount" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineItemDescription" ToolTip="A descriptive text field for the item">Line Item Description</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineItemDescription" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineItemAmount" CssClass="text-warning" ToolTip="Mandatory - The TOTAL item for the line item">Line Item Amount</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineItemAmount" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineItemRef" CssClass="text-warning" ToolTip="Mandatory - The name of the item purchased">Line Item Ref</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineItemRef" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineItemClass" ToolTip="Class for the line item">Line Item Class</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineItemClass" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineItemQty" ToolTip="Number of items ordered">Line Item Qty</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineItemQty" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineItemUnitPrice" ToolTip="Unit Price of the Item">Line Item Unit Price</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineItemUnitPrice" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                <div class="row" style="padding-bottom:5px">
                    <div class="col-x-6">
                        <asp:Label runat="server" ID="lblBillOLLineItemCustomer" ToolTip="Customer associated with the item purchase">Line Item Customer</asp:Label>
                    </div>
                    <div class="col-xs-6">
                        <asp:DropDownList ID="ddlBillOLLineItemCustomer" runat="server" AutoPostBack="false" Width="350px"></asp:DropDownList>
                    </div>
                </div>
                    </ContentTemplate>
                </asp:UpdatePanel>

            </div>
        </div>

            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </div>


</div>
我需要将所选文本值从列表框放入文本框。我知道我得到了正确的值,因为上面代码中的警报显示了正确的值,但是由于模式关闭,我不知道文本框是否正在更新。我需要用列表框的选定值填充文本框,并且需要模式保持打开状态。我意识到我的做法可能完全错误,因此欢迎提出任何改进建议。

您可以使用AJAX UpdatePanel,如下面的示例所示,删除每次回发时刷新整个页面的要求,并允许为您的案例部分呈现特定区域,这将是模态正文

HTML


最终解决了这个问题。该问题是由显示列表框的下拉菜单引起的。在列表框中单击任何内容后,下拉菜单立即关闭,基本上取消了选择并关闭了模式。我不得不停止传播下拉列表。一旦我这么做了,UpdatePanel就完成了它的工作。我在下拉菜单中添加了一个ID,并使用以下代码防止在单击列表框时关闭它

            $('#myDropdown .dropdown-menu').on({
            "click": function (e) {
                e.stopPropagation();
            }
        });

我希望这对其他人有帮助。愉快的编码。

尝试使用ajax更新面板来完成您的逻辑,而无需回发。如果您是认真的,我有这个,但我无法让它工作。如果没有Autopostback=true,则不会调用隐藏的代码,并且模式将消失。也许我在更新面板中遗漏了一些东西,但是仅仅用UpdatePanel包围代码什么也没做。用UpdatePanel示例检查我的答案如果你回发,页面将刷新,模式将关闭。对web方法进行AJAX调用,比如保持模式打开。否则,您必须在加载页面后再次打开模式。最好使用AJAX web方法类型调用。参考:感谢您尝试提供帮助,但在列表框的回发部分,模式仍然关闭。请发布您的完整HTML和代码。可能还有其他问题,也不需要更新选择JS函数完整代码是558行代码。我想你不想看到这一切。我将在一分钟内发布所有HTML。我正在测试另一个解决方案。谢谢你的帮助。欢迎,只是任何与fire Postback操作相关的代码。我添加了模态的所有代码,这是非常多的。代码隐藏事件中没有太多内容。如果我没有将Autopostback=true设置为true,则不会触发事件,如果触发,则模式关闭。
<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <!-- Button trigger modal -->
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
        Launch demo modal
    </button>

    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <%-- AJAX UpdatePanel section--%>
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                            </asp:DropDownList>
                            <br />
                            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    <button type="button" class="btn btn-primary">Save changes</button>
                </div>
            </div>
        </div>
    </div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // Bind DropDownList1 with some testing data
        DropDownList1.Items.Add(new ListItem() { Text = "Item 001", Value = "1" });
        DropDownList1.Items.Add(new ListItem() { Text = "Item 002", Value = "2" });
        DropDownList1.Items.Add(new ListItem() { Text = "Item 003", Value = "3" });
        DropDownList1.Items.Add(new ListItem() { Text = "Item 004", Value = "4" });
        DropDownList1.Items.Add(new ListItem() { Text = "Item 005", Value = "5" });
    }
}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    TextBox1.Text = DropDownList1.SelectedValue;
}
            $('#myDropdown .dropdown-menu').on({
            "click": function (e) {
                e.stopPropagation();
            }
        });