如何在jQuery中取消输入框的焦点?

152

在页面加载时,我使用以下代码将焦点设置到特定的输入字段:

$('#myInputID').focus();

当鼠标悬停在特定元素上时,是否有一种方法可以撤销或删除此焦点?(离开该元素后,焦点不必重置。)

我无法找到与jQuery相反的功能,或者其他可以在此处起作用的函数。

5个回答

258

使用 .blur() 方法。

当元素失去焦点时,会向该元素发送模糊事件(blur event)。最初,此事件仅适用于表单元素,如<input>。在较新的浏览器中,该事件的范围已扩展到包括所有元素类型。元素可以通过键盘命令(如Tab键)或在页面上其他地方进行鼠标点击来失去焦点。

$("#myInputID").blur(); 

好的,我觉得我在这里做错了什么或者我描述的方式不对。我想要在这里使用的元素具有类navbar(它是Bootstrap 3导航栏),所以我尝试了以下内容,但这并不起作用:$('.navbar').on('mouseover', function() { $('#myInputID').blur(); }); - user2571510
是的,我做了那个。如果这不起作用,我可以直接将焦点设置在导航栏上吗? - user2571510
1
尝试在事件内部添加警报并查看是否触发。 - Milind Anantwar
2
@user2571510:页面中是否有重复的ID?尝试使用$("[id=myInputID]").blur(); - Milind Anantwar
让我们在聊天中继续这个讨论 - Milind Anantwar
显示剩余4条评论

13

0

$(':text').attr("disabled", "disabled"); 将所有文本框设置为禁用模式。 您也可以通过为每个文本框分配ID的方式来实现。这样做会增加代码的重量并存在性能问题。

因此,最好采用$(':text').attr("disabled", "disabled");方法。


0

如果您使用了readonly属性,则模糊本身将无法工作。下面的代码可以解决这个问题。

$('#myInputID').removeAttr('readonly').trigger('blur').attr('readonly','readonly');

0

对于所有文本框:

$(':text').blur()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接