为什么要聚焦(); jQuery在聚焦一个字段后不执行某个功能?

zec*_*ude 4 jquery events focus

我试图在jQuery中使用focusout(http://api.jquery.com/focusout/)函数,在用户远离输入表单字段后执行一个函数,但是它不起作用.

这是我的代码:

$("#employee_id").focusout(function(){
  var employeeId = $("#employee_id").val();
  if(employeeId == '') {
    $("#employee_id").after('<div class="error">Your employee id number is required.</div>');
    hasError = true;
  }
});
Run Code Online (Sandbox Code Playgroud)

我正在使用jquery-1.3.2.min.js,因为当我尝试使用jquery-1.4.2.min.js时,我正在使用的另一个插件(qtip)给了我一个错误.

如何使焦点事件发挥作用,还是有另一种方法来完成我想要完成的任务?

Nic*_*ver 9

由于您似乎只关心该字段而不是父/冒泡,请使用.blur():

$("#employee_id").blur(function(){
  if($(this).val() == '') {
    $(this).after('<div class="error">Your employee id number is required.</div>');
    hasError = true;
  }
});
Run Code Online (Sandbox Code Playgroud)

  • @Chris - `focusout`冒泡,例如,如果你在一个`<input>`在`<div>`中,你移动到另一个`<div>`,`focusout`触发器`<input>`,然后是`<div>`它因为它在父母中冒泡.一个更简单的例子是链接,点击一个链接,你点击链接,然后无论链接在哪里,无论它是什么,它都会一直通过包含链接的父母,我们称之为`bubbling` .`blur()`和`focus()`**不要**这样做,它们是少数没有的东西. (2认同)