如何将焦点放在一个文本框上?即使您点击浏览器中的任何位置。
$("#txtSearch").focus();
答案 0 :(得分:22)
您需要订阅blur
的{{1}}事件并通过一小段时间恢复焦点:
textbox
这样您就不会依赖订阅页面上任何其他元素的事件。如果您订阅了$('#txtSearch').blur(function (event) {
setTimeout(function () { $("#txtSearch").focus(); }, 20);
});
或body click
,那么如果其他任何元素阻止其html click
事件的传播,它将无法运行,当{{1}标签显示时,它也无效}}
示例:
click
答案 1 :(得分:3)
$("html").click(function(){
$("#txtSearch").focus();
});
答案 2 :(得分:1)
$('body').click(function(){$("#txtSearch").focus();});
答案 3 :(得分:1)
除了点击远离输入的区域(即标签)之外,还有其他方法可以失去焦点。如果你想防止失去焦点,请使用模糊事件,即
document.getElementById('txtSearch').addEventListener('blur', e => {
e.target.focus();
});

答案 4 :(得分:0)
康斯坦丁·迪涅夫(Konstantin Dinev)答案在某些情况下可以正常工作,但是如果您不想仅在单击html的某些部分时就失去焦点,只需执行以下操作:
$(".nofocus").on( "mousedown", function (e) {
return false;
});
就我而言,我正在做一个小型的html文本编辑器,并且我不想在按下操作按钮时失去控制,但是在其他任何情况下都是如此。
我只需要在按钮上添加nofocus类,它将不会获得控制权
答案 5 :(得分:0)
在没有jQuery且没有重新聚焦的情况下也是可能的
只需监听mousedown事件并将其取消
element.addEventListener("mousedown", event => {event.preventDefault(); event.stopPropagation()});