您的位置:首页 > 编程语言 > ASP

在asp.net中回车触发指定按钮的事件

2009-11-04 21:31 519 查看
今天在开发中,遇到了一个问题:





在Header中有一个搜索输入框,搜索按钮是Button控件,在“资讯文章搜索”用户自定义控件中也用到了Button控件。

将焦点停在“资讯标题或内容”输入框中,回车,但是相应的是Header中输入框内容。

原因:回车执行的就是你页面上的第一个submit button。解决方法:(以下以资讯搜索输入框为例)

1、js:
----------------------------------------------------------------------------
/* 回车后执行按钮 */
function SubmitKeyClick(button){
if (event.keyCode == 13){
event.keyCode = 9;
event.returnValue = false;
document.all[button].click();
}
}

function checkinputbox(){
var charBag = "[^`~@#$%^&//'|*]";
var searchkey = document.getElementById("ArticleSearch1_txtSearchKey");

if (trim(searchkey.value).length == 0 || trim(searchkey.value).length > 30){
alert("资讯文章关键字不能都为空或长度不能超过个字符!");
searchkey.focus();
return false;
}

if (trim(searchkey.value) != ""){
for (var i = 0; i < searchkey.value.length; i++) {
var c = searchkey.value.charAt(i);
if (charBag.indexOf(c) > -1) {
alert("搜索资讯文章关键字字符串中含有非法字符(" + c +")!");
searchkey.focus();
return false;
}
}
}
}

2、aspx页面控件:
---------------------------------------------------
<input id="txtSearchKey" name="txtSearchKey" type="text" runat="server" maxlength="30" onfocus="this.select();" />

3、cs中:
---------------------------------------------------
this.txtSearchKey.Attributes.Add("onkeypress", "SubmitKeyClick('ArticleSearch1_btnSearch');");
this.btnSearch.Attributes.Add("onclick", "return checkinputbox();");

在Header的cs中,同时将输入框的Attributes属性添加上即可。

this.txtKey.Attributes.Add("onkeypress", "SubmitKeyClick('Header1_btnSearchkey');");

缺点:

目前该方法不能兼容ff,原因为:

1、ie的event.keyCode对应ff中的even.which(当然可以用if(document.all)来判断);

2、event.returnValue 在ff中可用return false替换,也可以用ff中的e.preventDefault()

3、click()在ff中也不支持。当然,如果不怕麻烦,可以使用jquery,用$("#...").click(function() { ...}来实现。可是我不想为了这个问题复杂化,在此从简。如果您有更好的方法,欢迎探讨^_^

欢迎访问:http://www.521189.com (521联合供货网)

QQ:863858965

email:qifl23702570@163.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: