2011-07-06 41 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 
相關問題