我的问题是。我的网站上有一个条形码扫描仪,用于验证学生是否在教室。我的表单的 INPUT 元素必须始终具有焦点,以便从条形码扫描仪接收代码。
我的代码是:
$("#codebarre").focus()
$("body").click(function(){
$("#codebarre").focus()
})
第二个条目是为了在我单击页面时恢复焦点。我的问题是:我可以在页面的另一个输入中写评论。使用我的代码,确实在单击我的输入后,#codebar 恢复焦点,并且我无法在我的输入中写入。所以我的需要是:除非我在评论输入中单击(焦点),否则始终将焦点放在#codebar上。
我试试这个:
$("#codebarre").focus()
$("body").click(function(){
if( !$(".remark").focus() ){
$("#codebarre").focus()
}
})
我的代码不起作用。你能告诉我我做错了什么吗?
最佳答案
您无法以这种方式确定控件是否具有焦点。 focus() 只会将焦点设置到该控件。有关如何确定控件是否具有焦点的详细说明,请参阅此答案:Using jQuery to test if an input has focus
如果您使用 jQuery 1.6,您应该能够执行以下操作:
$("body").click(function(){
if (!$(".remark").is(":focus")) {
$("#codebarre").focus()
}
编辑
如果您使用的是早期版本的 jQuery,则可以使用 $(document.activeElement)
来确定哪个控件具有焦点。在这种情况下,代码应该是:
$("body").click(function(){
if (!$(document.activeElement).hasClass("remark")) {
$("#codebarre").focus()
}
关于jquery - 除一种情况外,专注于输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6178195/