我希望始终关注文本字段。当他们单击文本字段时,我希望焦点返回到文本字段。
我如何用jquery完成这个?
$('input').focus();
$('input').**unfocused?**( function($) { $('input').focus();} );
答案 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;
});