当按下 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的解决方法,但这看起来像是一个小块。
答案 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 = "";
}