我想让一个文本域总是有焦点的。当他们点击文本域外时,我想让焦点回到文本域中。我如何使用jQuery来实现这一点?
$('input').focus(); $('input').**unfocused?**( function($) { $('input').focus();} );
0lvr5msh1#
您正在查找blur event:
blur
$(':text').blur(function() { this.focus(); });
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是否获得焦点。如果没有,它就会获得焦点。但这可能是一件非常烦人的事情。
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; });
3条答案
按热度按时间0lvr5msh1#
您正在查找
blur
event:3npbholx2#
下面的代码是另一种解决方案,它依赖于定期检查控件的状态。
在textbox(名为txtName)获得第一个焦点后,每隔0.2秒,代码就会控制textbox是否获得焦点。如果没有,它就会获得焦点。但这可能是一件非常烦人的事情。
nhjlsmyf3#
绑定以获取更改事件,并检查是否必须将焦点强制到此输入。如果是,请在文档中插入一些数据。$(document).data('_force_focus',e.target)
现在将文档绑定到focusin事件,测试文档是否具有“_force_focus”数据。如果是,则将焦点设置为该值。通过测试www.example.com来防止focusin重新触发器非常重要e.target