如何设置回车键触发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
相关产品推荐
相关产品推荐

