Javascript 获取jQuery.blur事件中焦点移动到的元素的id?

Javascript 获取jQuery.blur事件中焦点移动到的元素的id?,javascript,jquery,dom,Javascript,Jquery,Dom,我已经编写了一些代码,使用jQuery进行ajax调用,并在用户将焦点从字段移开时在页面上显示消息。我的字段称为txtLogin,用户键入一些文本,然后单击按钮,使用给定的txtLogin值在数据库中创建新的用户帐户 问题是一个有效值必须包含四个字母、一个破折号,然后再包含四个字母。我的客户坚持表单应该有两个字段,一个用于前四个字母,另一个用于后四个字母 假设这两个字段分别称为txtLogin0和txtLogin1。当用户将焦点从字段移开时,我仍然希望执行ajax调用,但是当用户从两个字段之一移

我已经编写了一些代码,使用jQuery进行ajax调用,并在用户将焦点从字段移开时在页面上显示消息。我的字段称为txtLogin,用户键入一些文本,然后单击按钮,使用给定的txtLogin值在数据库中创建新的用户帐户

问题是一个有效值必须包含四个字母、一个破折号,然后再包含四个字母。我的客户坚持表单应该有两个字段,一个用于前四个字母,另一个用于后四个字母

假设这两个字段分别称为txtLogin0和txtLogin1。当用户将焦点从字段移开时,我仍然希望执行ajax调用,但是当用户从两个字段之一移到另一个字段时,不应调用ajax调用

我当前的代码如下所示

$('#txtLogin').blur(function() {
    var login = $(this).val();
    var isValid = testLogin(login);
    if (!isValid) alert('Login is invalid');
});
我想象我的新代码是这样的:

$('#txtLogin0').add('#txtLogin1').blur(function() {
    var focusId = The Id of the newly focused element
    if (focusId==='txtLogin0' || focusId==='txtLogin1) return
    var login = $(#txtLogin0').val() + '-' + $('#txtLogin1').val();
    var isValid = testLogin(login);
    if (!isValid) alert('Login is invalid');
});

如何在jQuery.blur事件中获取焦点移动到的元素的id?

一个简单的方法是创建两个var,将当前和以前的元素存储在onfocus和onblur中,并在计时器内调用validate方法,该计时器将在0毫秒内触发。。尝试下面的代码,我认为它接近你想要的

var focusId = $(this).attr('id');

新元素尚未聚焦,因此仅使用模糊事件无法知道哪个元素正在聚焦。该事件返回模糊元素的id。此代码是否应在单击任何内容时触发$document.blur?该函数仅在页面首次加载时运行。@RiceFlourCookies您是否尝试过演示,每次从txtLogin0和txtLogin1模糊时都会调用validateLogin。
var prevEl, curEl;
$(document).ready(function() {
    $('#txtLogin0, #txtLogin1').blur(function() {
        prevEl = this.id;

        setTimeout(validateLogin, 0);

    }).focus(function() {
        curEl = this.id;
    });
});

function validateLogin() {
    if ((prevEl === 'txtLogin0' && curEl === 'txtLogin1') || (curEl === 'txtLogin0' && prevEl === 'txtLogin1')) {
        return;
    }
    prevEl = ''; curEl = '';
    var login = $('#txtLogin0').val() + '-' + $('#txtLogin1').val();
    var isValid = testLogin(login);
    if (!isValid) alert('Login is invalid');
}

function testLogin(txt) {
    return false;
}