【问题标题】:Causing auto post back by typing text into TextBox without pressing enter or tab通过在 TextBox 中键入文本而不按 enter 或 tab 来导致自动回发
【发布时间】:2011-07-06 11:04:39
【问题描述】:

我希望我的 asp.net TextBox 在不按 Enter 或 Tab 键的情况下在 TextBox 中键入文本时自动回发并激活服务器端事件,类似于 WinForms。这可能吗?如果是这样,是否只有在输入一定数量的字符(例如三个或四个)后才会发生这种情况?谢谢。

【问题讨论】:

  • 您真的想在用户从第三个/第四个开始输入的每个字符上发布到服务器吗?

标签: .net asp.net textbox autopostback


【解决方案1】:

您无法比较 Windows 应用程序和 Web 应用程序。在用户输入字符时回发到服务器意味着必须从 ASP.NET 重新创建所有 HTML 并将其发送回客户端。但这里有一个例子:

aspx:

<script type="text/javascript">
   var MIN_TEXTLENGTH = 3;

   function checkPostback(ctrl) {
     if (ctrl != null && ctrl.value && ctrl.value.length >= MIN_TEXTLENGTH) {
         __doPostBack(ctrl.id, '');
     }
   }
</script>


<asp:TextBox ID="TextBox1" OnKeyUp="checkPostback(this);" AutoPostBack="true" OnTextChanged="TextChanged" runat="server"></asp:TextBox>

代码隐藏:

Protected Sub TextChanged(ByVal sender As Object, ByVal e As EventArgs)
    TextBox1.Attributes.Add("onfocus", "javascript:this.value=this.value;")
    TextBox1.Focus()
End Sub

【讨论】:

    【解决方案2】:

    TextBox 的TextChange 事件在 JavaScript 中会变成blur 事件。这意味着它可以触发回发,只有当您离开控件(在客户端是输入或文本区域的文本框)并且值发生更改时。所以,没有技巧是不可能的。

    但是,关于您的体系结构(您希望将信息回发到服务器的方式),我得说它行不通,伙计。回邮真的很贵,你应该尽可能避免它们。我的建议是结合输入框的keydown事件使用ajax。

    【讨论】:

      【解决方案3】:

      您可以使用 Ajax 和 onkeypress 事件以及某种计数器来做到这一点。

      因此,您将一个函数连接到 textarea 的 onKeyPress 事件,每次触发时都会增加一个计数器,当此数字达到 3 或 4 时,您调用一个 ajax 函数,该函数在后台将表单发布到服务器并然后再次重置计数器。

      这将导致在使用 textarea 时发生的每 3 次或第 4 次按键(即每次按键 - 空格、回车、退格等...

      【讨论】:

        【解决方案4】:

        这似乎是个坏主意,但是...

        你不会有一些 java 脚本读取按键,然后在达到某个字符限制时启动一个帖子吗?

        Key Press Event 使用Ajax 或简单的submit 应该可以工作。

        -- 似乎另一张海报击败了我。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-28
          • 1970-01-01
          • 1970-01-01
          • 2010-10-23
          • 2019-10-30
          • 1970-01-01
          • 1970-01-01
          • 2013-11-20
          相关资源
          最近更新 更多