如何在ASP.NET中的文本框中检测由回车键引起的回发

时间:2016-04-05 02:05:05

标签: asp.net textbox key enter textchanged

当按下 Enter 时,Web应用程序中的@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activitypage2); ImageButton btn = (ImageButton) findViewById(R.id.imageButtonRock); //btn is set to the rock image needs to be dynamic btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(page2.this, Pop.class)); } }); } 将导致public class Pop extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.popupwindow); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; getWindow().setLayout((int)(width*.8),(int)(height*.4)); } 事件,但仅当文本已更改时才会出现。{ / p>

如果按 Enter 时文本未更改,则仍会发生回发,但TextBox事件不会。

我想知道是否可以确定在文本框中按下 Enter 并导致回发,即。是否有以下内容?

TextChanged

ASP.Net 4

注意,这不是关于如何在Web应用程序的TextBox中禁用由ENTER键引起的回发的问题,例如, stackoverflow.com/questions/4209903

还有一个使用面板和DefaultButton stackoverflow.com/questions/12072281的解决方法,但这看起来像是一个小块。

1 个答案:

答案 0 :(得分:0)

按下 Enter 的TextBox的ID可以存储在隐藏字段中:

<asp:TextBox ID="txtBox1" runat="server" onkeydown="keyPressed(event, 'txtBox1');" ... />
<asp:TextBox ID="txtBox2" runat="server" onkeydown="keyPressed(event, 'txtBox2');" ... />
<asp:HiddenField ID="hiddenEnterPressed" runat="server" />

<script>
    function keyPressed(e, id) {
        if (e.keyCode == 13) {
            document.getElementById('hiddenEnterPressed').value = id;
        }
    }
</script>

注意:onkeydown事件可以定义为keyPressed(event, this.id),但(可能)受损的ID将保存在隐藏字段中;对原始ID进行硬编码可以使事情变得更简单。

可以在代码隐藏中检索TextBox控件:

Control mainCtrl = Master.FindControl("MainContent");
TextBox txtBox = mainCtrl.FindControl(hiddenEnterPressed.Value) as TextBox;

每个回发都应重置隐藏字段:

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);
    hiddenEnterPressed.Value = "";
}