ASP.NET:我在文本框中输入异步回发

时间:2010-07-28 21:03:54

标签: asp.net asp.net-ajax

我在页面上有一个TextBox控件,我想用它来过滤网格。我希望TextBox控件以异步方式回发到页面,因为用户在文本框中输入值;优选地以一定间隔(即,在用户在回发之前停止键入之后等待500ms)。

如何在ASP.net中完成此操作?我知道UpdatePanel和TextBox TextChanged事件并没有给我我需要的东西,因为它不会在用户输入时触发,只有在控件失去焦点或者页面以其他方式发布后才会触发。

我也不想要自动完成类型功能。是否有任何控件可以让我做我想做的事情?

2 个答案:

答案 0 :(得分:1)

您可以使用jquery,在keyUp()事件上触发它,并在触发ajax调用之前设置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;

            }//
        }


     });

答案 1 :(得分:0)

我认为OnKeyUp Javascript function最适合您的需求。

根据您的工作情况,这可能会在性能方面付出代价......