2011-07-06 37 views
0

我希望我的asp.net文本框导致自动回发,并在文本框中输入文本时激活服务器端事件,而无需按下输入或选项卡,类似于WinForms。这可能吗?如果是这样,只有在输入一定数量的字符(如三或四)之后才有可能发生这种情况?谢谢。通过在文本框中输入文本而不按下输入或选项卡导致自动回发

+2

你真的要张贴到服务器上的每个烧焦用户输入与第三/第四个开始? –

回答

0

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

然而,关于你的架构(要回发信息到服务器的方式),我得说,这是行不通的好友。帖子背后非常昂贵,你应该尽可能避免它们。我的建议是使用ajax与输入框的keydown事件相结合。

0

你能做到这一点使用Ajax &的onkeypress事件事件加上某种计数器。

所以你把一个函数连接到你的textarea的onKeyPress事件,每次触发时它会增加一个计数器,当这个数字达到3或4时,你调用一个ajax函数在窗体后台然后再次重置计数器。

这将导致在后台,每3或第4按键出现这种情况,而textarea的是在使用中,这是每一个按键被贴在表格 - 空格,回车,退格等..

0

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

难道你不只是有一些Java脚本,它读取按键,然后启动后,当某个字符限制达到?

Key Press EventAjax或简单地submit应该工作。

- 看起来像另一张海报打我。

2

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

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 
相关问题