【问题标题】:Writing the value entered in a prompt box to textbox in asp.net将提示框中输入的值写入asp.net中的文本框
【发布时间】:2012-04-02 12:08:36
【问题描述】:

我有以下代码,我希望 ser 在提示框中输入的值到作为 asp.net 控件的文本框我该怎么做?请帮忙。

 protected void btnPreview_Click(object sender, EventArgs e)
    {
        divTemplateDesigner.Visible = true;
        divQueryBuilder.Visible = false;
        int count = 0;
        string[] splitMessage = txtTemplate.Text.Split(' ');
        List<string> parameterList = new List<string>();
        List<string> valueList = new List<string>();
        string newMessageString = txtTemplate.Text;
        for (int i = 0; i < splitMessage.Length; i++)
        {
            if (splitMessage[i].StartsWith("["))
            {
                parameterList.Add(splitMessage[i]);
                count++;
            }
       }
        for (int j = 0; j < count; j++)
        {
            string message ="Enter "+parameterList[j];
            Label lblmsge = new Label();
            lblmsge.Text =
                "<script language='javascript'>" + Environment.NewLine + "window.prompt('" + message + "')</script>";
            Page.Controls.Add(lblmsge);
        }
    }

提示框正常出现。但无法捕获用户输入的值。

HTML 是这样的

 <div class="page" runat="server" id="divTemplateDesigner">
    <table bgcolor="#0CB1C0" style="width:100%;">
        <tr>
            <td bgcolor="White" class="style5" rowspan="2">
                <asp:TreeView ID="treeviewDataset" runat="server" 
                    onselectednodechanged="treeviewDataset_SelectedNodeChanged">
                </asp:TreeView>
            </td>
            <td>
                <asp:TextBox ID="txtTemplate" runat="server" Height="200px" 
                    TextMode="MultiLine" Width="370px"></asp:TextBox>
            </td>
            <td colspan="2">
                <br />
                <br />
                <asp:Button ID="btnPreview" runat="server" BackColor="White" Height="30px" 
                    Text="Preview" Width="120px" onclick="btnPreview_Click" />
            </td>
            <td>
                <asp:TextBox ID="txtPreview" runat="server" Height="200px" TextMode="MultiLine" 
                    Width="370px"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td align="left" colspan="2">
                &nbsp;
                <asp:Button ID="btnBack" runat="server" BackColor="White" Height="30px" 
                    Text="Back" Width="120px" onclick="btnBack_Click" />

您在这张图片中看到该框有三个占位符 [patient_ID] [Doctor_ID] 和 [Appointment_Date] 正在根据第一个框中的占位符数量打开提示框。 计数 = 占位符的数量

【问题讨论】:

  • 我建议您完全在 JavaScript 中执行此操作。
  • 有一个名为 txtPreview 的文本框。代码中没有提到。
  • 我的javascript太差了,我这里用的javascript也是从网上抄来的
  • 那么这是一个可怕的方式,甚至考虑这样做。如果您可以发布您的 html 代码,那么您将获得更多帮助
  • 好吧,给我一分钟,我将发布 html。你想要整个 html 文件???

标签: javascript asp.net prompt


【解决方案1】:

只需使用 Javascript 来完成您所追求的,而不是回发到服务器。

<script type="text/javascript">
    function PromptAndFillPreview() {
        var templateStr = document.getElementById('<%= txtTemplate.ClientID %>').innerText;
        var previewStr = '';
        var phIndexStart = templateStr.indexOf('[');
        var phIndexEnd = 0;
        while (phIndexStart >= 0) {
            previewStr = previewStr + templateStr.substring(phIndexEnd, phIndexStart);
            phIndexEnd = templateStr.indexOf(']', phIndexStart) + 1;
            var placeholder = templateStr.substring(phIndexStart, phIndexEnd);
            previewStr = previewStr + prompt("Please input value for " + placeholder, '');
            phIndexStart = templateStr.indexOf('[', phIndexEnd);
        }
        previewStr = previewStr + templateStr.substring(phIndexEnd, templateStr.length);
        document.getElementById('<%= txtPreview.ClientID %>').innerText = previewStr;
    }
</script>

而且由于您不需要回发,您可以替换:

<asp:Button ID="btnPreview" runat="server" BackColor="White" Height="30px" 
    Text="Preview" Width="120px" onclick="btnPreview_Click" />

与:

<input type="button" style="background-color:White; height:30px; width:120px;"
    value="Preview" onclick="PromptAndFillPreview()" />

【讨论】:

  • 感谢您的时间和耐心 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多