You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP文本框回车触发按钮点击JS函数仅Edge生效,求全浏览器兼容

解决跨浏览器的ASP文本框回车触发按钮点击问题

你的问题核心出在**window.event的兼容性**上——这是IE/旧Edge专属的事件对象获取方式,Chrome、Firefox、Opera这类遵循标准的浏览器不会把事件对象挂载在window上,而是通过事件处理函数的参数传递。下面给你一套全浏览器兼容的解决方案:

第一步:修改JavaScript函数

替换原有函数,改成标准的跨浏览器事件处理逻辑,同时加入阻止默认回车行为的代码(避免表单自动提交导致页面刷新):

function button_click(objTextBox, objBtnID, event) {
    // 兼容所有浏览器获取事件对象
    const e = event || window.event;
    // 兼容keyCode和which(适配部分旧版本浏览器)
    const keyCode = e.keyCode || e.which;
    
    if (keyCode === 13) {
        // 阻止默认回车行为(比如表单自动提交)
        if (e.preventDefault) {
            e.preventDefault();
        } else {
            // IE旧版本的阻止方式
            e.returnValue = false;
        }
        
        const targetBtn = document.getElementById(objBtnID);
        if (targetBtn) {
            targetBtn.focus();
            targetBtn.click();
        }
    }
}

第二步:调整后端C#的事件绑定

在绑定onkeypress事件时,需要把浏览器的事件对象传递到函数中,修改你的C#代码片段:

Password.Attributes.Add("onkeypress", "button_click(this,'" + LogIn.ClientID + "', event)");

额外说明

  • 为什么要阻止默认行为?如果文本框处于<form>标签内,按下回车会默认触发表单提交,直接刷新页面,会覆盖你的按钮点击逻辑。
  • 兼容e.which是为了适配一些旧版本Firefox,现在主流浏览器已普遍支持keyCode,但加上能让兼容性更稳妥。

这样修改后,你的函数就能在Edge、Chrome、Firefox、Opera等所有主流浏览器中正常工作了。

内容的提问来源于stack exchange,提问作者Ragnar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:23:07