我遇到了一个奇怪的问题,使用document.activeElement.id
已经解决了该问题,但是使用$('#id').is(':focus')
时似乎总是返回false
。
在控制台中,我测试了以下内容...
> document.activeElement
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">
> $('#zoomText')
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">
> $('#zoomText').is(':focus')
false
> document.activeElement // to check if focus was lost somehow
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">
为什么
is(':focus')
返回假? 最佳答案
首先,您的代码中有一个错误。它应该是$('#zoomText').is(':focus')
。
其次,仅当光标位于元素内部时,该元素才会处于焦点。如果光标在JavaScript控制台中,则它具有焦点并导致输入模糊(焦点不清晰)。
在JavaScript控制台中尝试此操作,然后将光标快速移回输入中。 3秒后,它将在控制台中显示“ true”或“ false”,以指示“ zoomText”元素的焦点状态。
setTimeout(function() { console.log(jQuery('#zoomText').is(':focus')); }, 3000)