如何检测用户更改表单数据?

时间:2018-07-31 00:45:10

标签: c# asp.net timer

ASPX:

<asp:TextBox id="tb1" runat="server"/>

C#:

public hello(){
    Debug.WriteLines("Current value is: " + tb1.Value);
}

我有一个计时器,它将在页面启动时每2秒运行一次hello()。假设tb1的默认值为“ Bob”,则每2秒将正确输出一次。假设我在tb1中输入了一些内容,并将默认值替换为“ Fred”。但是,即使我替换了当前值,“ Bob”仍每2秒输出一次

如何解决此问题,以便hello()查看tb1的当前值,而不是启动时快照的内容?


我的最终目标是检测用户何时输入信息,因此我可以根据需要显示/隐藏表单元素,具体取决于他们当前正在输入的内容。如果有比在不让客户做任何事情(而不是继续填写信息)的情况下不断检查值更简单的方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以使用onchange属性并在文本更改时调用函数,而不是每10秒检查一次并节​​省一些资源。

类似

<asp:Textbox id="myTextbox" runat="server" onChange="txtChanged" AutoPostBack="true"/>

然后在类似代码后面的代码中

public void txtChanged(object sender, EventArgs e)
{
    //Get text
    string text = ((TextBox)sender).Text;
    Debug.WriteLines("Current value is: " + text);
}

出于多种原因,应避免使用此计时器方法来检测用户输入。

效率:不管用户在做什么,每10秒调用一次该方法都是低效率的。

用户体验:当Bob不得不等待额外的十秒钟来更新表单时,这会带来糟糕的用户体验。

可维护性:这也使代码的可维护性降低,尤其是在采用这种计时器方法时,因为接口与背后的代码之间的直接关联较少。