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

时间:2010-09-05 02:21:09

标签: javascript jquery javascript-events

我希望始终关注文本字段。当他们单击文本字段时,我希望焦点返回到文本字段。

我如何用jquery完成这个?

$('input').focus();

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

3 个答案:

答案 0 :(得分:3)

您正在寻找blur event

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

答案 1 :(得分:0)

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

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");});

在文本框(名为txtName)获得第一个焦点后,每隔0.2秒,代码控制文本框是否具有焦点。如果没有,那就是重点。但这可能是一个非常讨厌的事情。

答案 2 :(得分:0)

绑定以获取更改事件,并检查是否必须强制关注此输入,如果是,请在文档中插入一些数据。 $(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”数据。如果是这样,将焦点设置为值。重要的是通过针对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;
     });