javascript - 如何使用 ASP.NET WebForms 中的 JavaScript 将 FormView 中的 DropDownList 中的文本获取到 TextBox 中?

标签 javascript c# asp.net

我试图将选定的文本(不是值)从 DropDownList 获取到 TextBox 中。 DropDownList 位于 FormView 控件的 EditITemTemplate 内,但 TextBox 不在。

这是我尝试使用的js:

<script type="text/javascript">
    function GetDdlText() {
        var fvmode = ('<%=fvPhaudDets.CurrentMode.ToString()%>');
        if (fvmode == "Edit") {
            var ddl = document.getElementById('<%=fvPhaudDets.FindControl("QOpClsCallDdl")%>');
            var txt = document.getElementById("txtbox");
            var selectedText = ddl.options[ddl.selectedIndex].Value;
            txt.Text = selectedText;
            txt.focus();
        }
    }
</script>

这是我调用 js 的 OnSelectedIndexChanged 事件:

protected void QOpClsCallTextBox_OnSelectedIndexChanged(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "TheTxt", "GetDdlText();", true);
}

因此,只要在 DropDownList 中选择新值,所选文本就会填充 TextBox,但不会有任何值进入 TextBox。我缺少什么,或者我需要更改什么才能捕获所选值?

最佳答案

下面的代码片段应该可以工作。您的 JavaScript 代码存在一些问题。主要是大写字母的使用以及Webforms和javascript函数的混合。

首先,要找到 DDL,您需要 ClientID

fvPhaudDets.FindControl("QOpClsCallDdl").ClientID

然后使用正确的 javascript ddl.options[ddl.selectedIndex].text,而不是 .Value 设置文本框文本也是如此。它是 txt.value = selectedText;,而不是 txt.Text

<script type="text/javascript">
    function GetDdlText() {
        var fvmode = ('<%=fvPhaudDets.CurrentMode.ToString()%>');
        if (fvmode == "Edit") {
            var ddl = document.getElementById('<%= fvPhaudDets.FindControl("QOpClsCallDdl").ClientID %>');
            var txt = document.getElementById("txtbox");
            var selectedText = ddl.options[ddl.selectedIndex].text;
            txt.value = selectedText;
            txt.focus();
        }
    }
</script>

更新

要检查 FormView 是否处于编辑模式,请使用此行

var ddl = document.getElementById('<%= fvPhaudDets.CurrentMode == FormViewMode.Edit ? fvPhaudDets.FindControl("QOpClsCallDdl").ClientID : "" %>');

更新2(完整的工作示例)

<asp:FormView ID="fvPhaudDets" runat="server">
    <EditItemTemplate>

        <asp:DropDownList ID="QOpClsCallDdl" runat="server" onchange="GetDdlText()">
            <asp:ListItem>aaa</asp:ListItem>
            <asp:ListItem>bbb</asp:ListItem>
            <asp:ListItem>ccc</asp:ListItem>
        </asp:DropDownList>

    </EditItemTemplate>
</asp:FormView>

<input type="text" id="txtbox" />

<script type="text/javascript">
    function GetDdlText() {
        var fvmode = ('<%=fvPhaudDets.CurrentMode.ToString()%>');
        if (fvmode == "Edit") {
            var ddl = document.getElementById('<%= fvPhaudDets.CurrentMode == FormViewMode.Edit ? fvPhaudDets.FindControl("QOpClsCallDdl").ClientID : "" %>');
            var txt = document.getElementById("txtbox");
            var selectedText = ddl.options[ddl.selectedIndex].text;
            txt.value = selectedText;
            txt.focus();
        }
    }
</script>

用于测试的代码隐藏

fvPhaudDets.DataSource = new string[1];
fvPhaudDets.ChangeMode(FormViewMode.Edit);
fvPhaudDets.DataBind();

关于javascript - 如何使用 ASP.NET WebForms 中的 JavaScript 将 FormView 中的 DropDownList 中的文本获取到 TextBox 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52596158/

相关文章:

javascript - 如何通过 AJAX 解析和使用 HTML 和变量?

javascript - 从 PowerShell 打开 Internet Explorer 时出现问题

c# - WCF 日志记录,设置最大文件大小?

c# - SQL Server 异常 :Timeout expired. 操作完成之前超时时间已过或服务器没有响应

Azure(或任何云托管)上的 ASP.NET Web 表单应用程序

javascript - 使用 Vue.js 的 Firebase 电话号码身份验证不起作用

php - 从街道方向获取准确坐标的最佳方法

c# - 查找并行异步任务的结果

c# - 同时通过 ref 和 typecast

asp.net - 如何显式地将 ASP.NET session 设置为仅在关闭浏览器或显式注销时过期?