【问题标题】:HTML5 type setting returns empty control text propertyHTML5 类型设置返回空控件文本属性
【发布时间】:2016-04-08 16:44:23
【问题描述】:

有以下问题: 在 asp.net/vb.net/ajax 站点上工作的是 Visual Studio 2010,我正在尝试在现有文本框控件中使用 HTML5 type="email" 为触摸屏设备生成电子邮件目标键盘显示...

    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </asp:ToolkitScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
...
    <asp:TextBox ID="Email" runat="server" CssClass="txtBox" type="email"></asp:TextBox>

<asp:Button ID="Confirmation" runat="server" Text="Confirm" CssClass="btnBox" OnClick="Confirmation_Click" OnClientClick="setFocus();" />
...
    </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="Confirmation" EventName="Click" />
    </Triggers>
    </asp:UpdatePanel>

但在代码隐藏中,Email.txt 返回一个空字符串。如果我删除 type="email" ,一切都很好。

所以这引出了一个问题,我假设类型定义覆盖了文本框控件的隐含type="text",那么如何访问异步回发的控件值?或者我可以吗?

msg = String.Format("Email:{0} ", Email.Text)

更新:

还尝试将带有基本html元素的请求表单与Request.Form结合使用,但在type="email"时仍然无法检索值

...
                    <asp:TextBox ID="Email" name="Email" runat="server" CssClass="txtBox" type="email"></asp:TextBox><br />
                    <input id="Email1" name="Email1" type="email" CssClass="txtBox"  />
...

代码隐藏

...
        If Not Request.Form("Email1") Is Nothing Then
            temp = Request.Form("Email1").ToString
        End If
        If Not Request.Form("Email") Is Nothing Then
            temp = Request.Form("Email").ToString
        End If
...

但如果我更改 type="text" ,一切都很好......呃......

感谢您的指导...

戴夫

【问题讨论】:

    标签: asp.net vb.net html asp.net-ajax


    【解决方案1】:

    呃...回答我自己的问题...

    因此,据推测,文本框控件中的"TextMode" 将支持框架 4.5 中的电子邮件等模式(未经我这边测试),但我目前无法升级,所以有点创意“变通”让我通过了。

    所以基本上我添加了一个隐藏字段控件并使用 JavaScript 将控件注入电子邮件字段中的值,这使我的代码能够使用值集...请参阅下面的代码。

    <script type="text/javascript">
        function setFocus() {
        ...
            var hdnEmail = document.getElementById("HDNEmail");
            var emlEmail = document.getElementById("Email1");
            hdnEmail.value = emlEmail.value;
        ...
        }
    </script>
    ...
        <input id="Email1" name="Email1" type="email" class="txtBox"  />
        <asp:HiddenField ID="HDNEmail" runat="server" ClientIDMode="Static"></asp:HiddenField>
    ...
    
    <asp:Button ID="ctlBTNConfirmation" runat="server" Text="Confirm" CssClass="btnBox" OnClick="Confirmation_Click" OnClientClick="setFocus();" />
    
    ...
    

    代码隐藏

    ...
    temp = HDNEmail.Value
    ...
    

    HTH 某人,但如果其他人有更优雅的解决方案...请添加

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2021-12-27
      • 2013-08-02
      • 2021-10-19
      • 2013-07-16
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      相关资源
      最近更新 更多