2010-07-28 33 views
2

我有一個TextBox控件,我想用來過濾網格的頁面。我希望TextBox控件異步回發到頁面,因爲用戶在文本框中鍵入值;最好是以一定的間隔(即在用戶停止打字之前等待500毫秒後再回來)。ASP.NET:異步回發,因爲我在文本框中鍵入

我該如何在ASP.net中完成這項工作?我知道UpdatePanel和TextBox TextChanged事件並沒有給我我需要的東西,因爲它不會在用戶輸入時觸發,只有在控件失去焦點或者頁面以其他方式發佈後纔會觸發。

我也不想要自動完成類型功能。是否有任何控制措施可以讓我做我想做的事?

+0

沒有現成的擴展器來做你的問題(我知道的),主要是因爲你問的不是很常見。最好的辦法是連接一個客戶端JavaScript處理程序(onKeyUp),然後利用setTimeout和簡單的ajax調用。 jQuery會使這一塊蛋糕。 – RPM1984 2010-07-29 00:39:07

回答

1

您可以使用jQuery,火它使用keyUp()事件,並設置setTimeout的方法燒製的前阿賈克斯呼叫。

$("#id input").keyup(function(){ 
     var $value = $(this); 

     if (this.value != this.lastValue) { 
      if (this.timer) clearTimeout(this.timer); 
      msgbox.css({"background-image":"none"}).html('<img src="img/ajax-loader.gif" height="16" width="16" /> checking availability...'); 

      this.timer = setTimeout(function() {  
        $.ajax({ 

         type: "POST", 

         url: "Default.aspx/StaticMethod", 

       data: "{'username': '" + $value .val() + "'}", 

       contentType: "application/json", 

       dataType: "json", 

       success: function(msg) {  

        if (msg.d != 1) { 

         // 
        } 
        else { 
         // 

        } 
       } 
      }); 

      }, 200); 

      this.lastValue = this.value; 

      }// 
     } 


    }); 
0

我想OnKeyUp Javascript function將最適合您的需求。

取決於你在做什麼,但是,這有可能會在性能方面非常昂貴...

+0

我相信你可以做這個工作,但它絕對不是理想的。我正在考慮採用某種存在的擴展器來處理髮布內容 - 我提到了「延遲」間隔。如果我真的很快地輸入foo,然後停止輸入,那麼只有在我停止輸入後纔會發佈 - 也許以後會有一秒。 – Dismissile 2010-07-28 21:15:33