点击F1跳转页面时当前页textbox失效问题求解
问题原因&解决方案
嘿,问题出在你写的e.preventDefault()位置上!你把它放在了整个keydown事件处理函数的最开头,这会阻止所有键盘操作的默认行为——包括文本框里输入字符、按退格删除内容这些基础操作,所以你的TextBox才没法用。
正确的做法是:只在检测到F1键的时候,才阻止默认行为(因为F1默认会触发浏览器的帮助页面,我们需要拦截这个),其他按键让它们正常工作就好。
修改后的代码(兼容旧版keyCode)
$(document).ready(function () { $("body").keydown(function (e) { // 统一用参数e,避免全局event的兼容问题 if (e.keyCode === 112) { e.preventDefault(); // 只在F1触发时阻止默认行为 window.location.href = "../nextpage.aspx"; } // 其他按键不做任何拦截,保留默认行为 }); });
更推荐的写法(使用标准的key属性,keyCode已废弃)
现在浏览器更推荐用e.key来判断按键,可读性更好,兼容性也更稳定:
$(document).ready(function () { $("body").keydown(function (e) { if (e.key === 'F1') { e.preventDefault(); window.location.href = "../nextpage.aspx"; } }); });
这样改完之后,F1键依然能正常跳转页面,同时TextBox也可以正常输入内容啦~
内容的提问来源于stack exchange,提问作者CodingFriend
相关产品推荐
相关产品推荐

