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