一般来说, "回车键"事件是完成输入工作后提交数据或输入关键字后回车进行搜索的情况下会进行激发。不管在DNN还是一般的BS程序, 我们都会碰到点击回车键"Enter"激发事件的情况, 但是有时我们在同一个页面可能同时存在多个通过回车键提交表单时执行特定的button按钮事件, 这样情况如何处理呢?我们知道Asp.Net 2.0存在一特性, 那就是每个form. 或 panel都有一个属性defaultbutton负责回车键"Enter"激发事件, 也就是说你可以设置这一属性来控制你所响应的键盘回车动作, 然而这一属性在Firefox不起作用, 故此我们还得寻找另外的方法. 搜索一下, 似乎存在通过脚本注册的方法可以解决, 同时联想到DNN登陆模块似乎存在这一机制, 研究一番, 原来ClientAPI辅助类有一方法RegisterKeyCapture可以保证当前页面回车键提交表单的目标控件, 故在此共享一下两种解决方案:
1) DNN RegisterKeyCapture方式
- '注册按钮btnSearch为当前页面回车键提交表单的目标控件, Asc(vbCr)对应就是回车键的ASCII码, 也就是 13, 故你也可以直接设置这一参数为13.
- DotNetNuke.UI.Utilities.ClientAPI.RegisterKeyCapture(Me.Parent, Me.btnSearch, Asc(vbCr))
2) 注册脚本方式
<1>服务器控件:
- txtSearch.Attributes.Add("onkeypress", "if (event.keyCode == 13) {document.forms[0]." & btnSearch.ClientID & ".click();event.keyCode = 0; return false;}")
<2>客户端控件:
- $addHandler(searchBox, 'keydown', Function.createDelegate(this, onKeydown));
- $addHandler(anotherSearchBox, 'keydown', Function.createDelegate(this,onKeydown));
- function onKeydown(e){
- if(e.keyCode == 13){
- yourFunction(); //onPopOk(e);
- e.preventDefault();
- return false;
- }
- return true;
- }
转载于:http://blog.itpub.net/15040802/viewspace-419031/