我有一个表单(用于用户注册),它通过将其分成隐藏/显示为.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?
答案 0 :(得分: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规范化target
,但你总是可以这样做以确保:
var target = event.target || event.srcElement;
看起来您的代码只能在Internet Explorer中使用?