【问题标题】:Focus on input except in one case专注于输入,除了一种情况
【发布时间】:2011-05-30 15:34:39
【问题描述】:

我的问题是。我在我的网站上有一个条形码扫描仪,以验证学生是否在教室里。我的表单的 INPUT 元素必须始终具有焦点才能从条形码扫描仪接收代码。

我的代码是:

    $("#codebarre").focus()
    $("body").click(function(){
        $("#codebarre").focus()      
})

第二个条目是为了在我单击页面时恢复焦点。我的问题是:我可以在页面的另一个输入中写评论。使用我的代码,确实在单击我的输入后,#codebar 恢复焦点并且我无法在我的输入中写入。所以我的需要是:始终关注#codebar,除非我在我的评论输入中单击(焦点)。

我试试这个:

    $("#codebarre").focus()
    $("body").click(function(){
    if( !$(".remark").focus() ){
        $("#codebarre").focus()  
    }        
})

我的代码不起作用。你能告诉我我做错了什么吗?

【问题讨论】:

    标签: jquery input focus


    【解决方案1】:

    您无法确定控件是否以这种方式获得焦点。 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 版本;(我使用的是 1.4.2。我必须复制我的网站才能获得开发版本,并将使用 1.6 进行测试。我会尽快提供反馈. 感谢您的回复。
    • 正是我需要的 ;) 非常感谢您的帮助。
    • @雨果酷!很高兴我能帮上忙。
    【解决方案2】:

    使用document 代替body 并将!$(".remark").focus() 更改为$(".remark:focus").length == 0!$(".remark").is(":focus")

    $(document).click(function(){
        if($(".remark:focus").length == 0) {
            $("#codebarre").focus() ;
        }        
    })
    

    fiddle

    【讨论】:

    • 谢谢,你的代码对我有用,但只有在添加了这段代码之后: $("#codebarre").val('');在第三行,我将在明天关闭我的问题之前使用条形码扫描仪进行检查。
    【解决方案3】:

    使用:focus 选择器。 http://api.jquery.com/focus-selector/

    if($(".remark:focus").length==0 ){
            $("#codebarre").focus()  
    } 
    

    【讨论】:

      【解决方案4】:

      您可以使用注释框的 OnFocus 事件来运行一段设置变量的代码。这样当输入设置为注释框时,变量设置为false。而如果变量设置为false,你需要确保它不再将焦点改变到条形码框上。

      【讨论】:

        猜你喜欢
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多