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

如何设置回车键触发onserverclick事件?ASP.NET中jQuery失效问题咨询

嘿,我来帮你解决这个回车键触发服务器端搜索的问题!你遇到的问题本质是直接调用onserverclick对应的函数是行不通的——因为onserverclick是ASP.NET的服务器端属性,最终渲染到浏览器时,它会被转换成ASP.NET内置的回发逻辑(比如__doPostBack函数),而不是直接暴露一个客户端可调用的GetDistributorRegNo函数。

下面给你两种靠谱的解决方案:


方案1:用表单包裹搜索区域(最简洁)

ASP.NET的服务器端按钮在表单内时,回车键会自动触发表单提交,进而触发按钮的onserverclick事件。你只需要把现有代码放进一个服务器端表单里,再把按钮类型改成submit(不改其实也能触发,但改了更规范):

<form id="searchForm" runat="server">
    <div class="input-append">
        <input type="text" id="txtSearch" name="txtSearch" class="autosuggest span10 classic-search" autofocus="true" tabindex="1" />
        <button class="btn" type="submit" id="SchButton" onserverclick="GetDistributorRegNo" runat="server">
            <i class="icon-search"></i>
        </button>
    </div>
</form>

这样用户在输入框按下回车键时,浏览器会自动提交表单,ASP.NET就会执行GetDistributorRegNo服务器端方法,完全不用写额外的JS。


方案2:用jQuery监听回车键,模拟按钮点击(更灵活)

如果不想用表单,你可以通过jQuery监听输入框的回车键事件,然后模拟按钮的点击动作(而不是直接调用onserverclick),这样就能触发ASP.NET的回发逻辑:

$(document).ready(function() {
    // 监听输入框的按键事件
    $('#txtSearch').keypress(function(e) {
        // 判断是否是回车键(keyCode=13)
        if (e.which === 13) {
            e.preventDefault(); // 阻止默认的回车行为(比如页面刷新)
            // 触发服务器端按钮的点击事件
            $('#<%= SchButton.ClientID %>').click();
        }
    });
});

注意点:

  • 如果你用的是ASP.NET Web Forms,服务器控件的客户端ID可能会被自动修改(比如变成ctl00_MainContent_SchButton),所以要用<%= SchButton.ClientID %>来获取正确的客户端ID;
  • 如果你用的是ASP.NET 4.0及以上版本,可以给按钮设置ClientIDMode="Static",这样客户端ID就和你设置的SchButton一致,直接用$('#SchButton')就行。

两种方案都能解决你的问题,选哪种看你的场景需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:24:34