我遇到了一个奇怪的问题,我已经使用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')
会返回false?
答案 0 :(得分:1)
首先,您的代码中存在错误。它应该是$('#zoomText').is(':focus')
。
其次,如果光标位于其中,则元素将仅处于焦点。如果光标位于JavaScript控制台中,则它具有焦点并导致输入模糊(失焦)。
在JavaScript控制台中尝试此操作,然后快速将光标放回输入中。 3秒后,它将显示&#34; true&#34;或&#34;假&#34;在控制台中指示&#34; zoomText&#34;的焦点状态。元件。
setTimeout(function() { console.log(jQuery('#zoomText').is(':focus')); }, 3000)
&#13;