jquery 未聚焦时将焦点设置在文本字段上

tpxzln5u  于 2022-12-18  发布在  jQuery
关注(0)|答案(3)|浏览(145)

我想让一个文本域总是有焦点的。当他们点击文本域外时,我想让焦点回到文本域中。
我如何使用jQuery来实现这一点?

$('input').focus();

$('input').**unfocused?**( function($) { $('input').focus();} );
0lvr5msh

0lvr5msh1#

您正在查找blur event

$(':text').blur(function() { this.focus(); });
3npbholx

3npbholx2#

下面的代码是另一种解决方案,它依赖于定期检查控件的状态。

var controlFocus=false;
$("#txtName").focus(function(){
    $(this).addClass("focused"); 
    if(!controlFocus) {
        controlFocus = true;
        setInterval(function(){ 
            var o = $("#txtName");
            if(!o.hasClass("focused")) o.focus();
        }), 200);
    }
}).blur(function(){$(this).removeClass("focused");});

在textbox(名为txtName)获得第一个焦点后,每隔0.2秒,代码就会控制textbox是否获得焦点。如果没有,它就会获得焦点。但这可能是一件非常烦人的事情。

nhjlsmyf

nhjlsmyf3#

绑定以获取更改事件,并检查是否必须将焦点强制到此输入。如果是,请在文档中插入一些数据。$(document).data('_force_focus',e.target)

$('input.force').bind('change', function(e) {
        if( need_force_focus() ) {
                $(document).data('_force_focus', e.target);
        } else {
                $(document).removeData('_force_focus');
        }
   });

现在将文档绑定到focusin事件,测试文档是否具有“_force_focus”数据。如果是,则将焦点设置为该值。通过测试www.example.com来防止focusin重新触发器非常重要e.target

$(document).bind('focusin', function (e) {
     var t = $.data(document, '_force_focus');
             if( t && e.target !== t ) {
                     $(t).trigger('focus');
                     return false;
             }
             return true;
     });

相关问题