0

我有一个表单(用于用户注册),它通过将其拆分为使用 .slideUp()/.slideDown() 隐藏/显示的 div 进行分页。这一切都很好,但我想在每个页面进入下一页之前使用 javascript 验证它们,以减少从服务器端验证返回的错误数量。现在我将它们设置为验证 onblur。要在单击“下一步”按钮时检查所有元素,我想使用 .blur() 强制它验证每个输入,但出现错误。我的 onblur 函数的一个例子是:

var validateEmpty = function() {
    var $src = $('.registrationPage #' + event.srcElement.id);
    validate($src, "Can't be left empty!", checkEmptyRequired);
}

通过将onblur属性设置为函数来绑定它。

其中 validate 是一个函数,它接受一个 jQuery 对象、一条错误消息和一个返回布尔值的函数。我得到的错误是

TypeError: Cannot read property 'srcElement' of undefined

所以我很清楚 .blur() 不会触发 javascript 事件,只是调用 onblur 函数。如何以一种在正常模糊时(通过在页面中失去焦点)和使用 .blur() 时都可以工作的方式获取模糊元素的 id?

4

1 回答 1

1

您没有向我们展示如何调用该函数,但您可能应该将事件作为参数传递,否则它在某些浏览器中将是未定义的(但在 IE 中不是):

var validateEmpty = function(event) {
    var $src = $('.registrationPage #' + event.target.id);
    validate($src, "Can't be left empty!", checkEmptyRequired);
}

这将适用于:

$('.elements').on('blur', validateEmpty);

此外,srcElement很少使用(它是 IE 特定的),我认为 jQuery normalized target,但你总是可以做这样的事情来确保:

var target = event.target || event.srcElement;

看起来您的代码是为仅在 Internet Explorer 中工作而编写的?

于 2013-07-19T19:45:37.607 回答