请考虑以下事项:
<form runat="server">
<div>
<asp:TextBox runat="server" ID="tb1" />
<asp:Button runat="server" ID="b1" OnClick="b1_Click" />
</div>
<div>
<asp:TextBox runat="server" ID="tb2" />
<asp:Button runat="server" ID="b2" OnClick="b2_Click" />
</div>
<div>
<asp:TextBox runat="server" ID="tb3" />
<asp:Button runat="server" ID="b3" OnClick="b3_Click" />
</div>
</form>
每个TextBox都有一个关联的Button。我希望能够在每个Button控件上切换焦点,这样当我将光标放在第二个文本框(tb2
)并按Enter时,相关的按钮(b2
)被点击并且相关的OnClick
事件被触发。
我自己也有一些想法,但在我开始浪费时间实施破解的解决方案之前,我希望你们的反馈/经验教训。
注意:
答案 0 :(得分:4)
你可以在文本框上捕获keydown事件,然后触发按钮的回调javascript,如果它是回车键。您可以使用ClientScriptManager.GetPostBackEventReference
获取回调参考或者你可以将每个文本框包装在它自己的Panel中,这会暴露DefaultButton属性。
答案 1 :(得分:2)
如果你使用jQuery,你可以使用jQuery做一个很好的简单路由。
简单地执行以下操作可能会很有效:
<script language="javascript" type="text/javascript">
jQuery(function(){
jQuery('input').keydown(function(e){
if (e.keyCode == 13) {
jQuery(this).next().trigger('click');
return false;
}
});
});
</script>
然后代码端你会触发相关的事件处理程序,或者只是通过查询发件人对象id来查看单击了哪个按钮