嵌套对象事件

时间:2011-04-25 20:04:39

标签: javascript events validation object

我正在开发一个验证项目,我目前已将其设置为输入列为对象的位置。我目前有这个代码来设置和运行事件:

使用的设置方法和功能

function setup(obj) {
    obj.getElement().onfocus = function() {startVal(obj)}
    obj.getElement().onblur = function() {endVal(obj)}
}

function startVal(obj) {
    obj.getElement().onkeyup = validate(obj)
}

function endVal(obj) {
    obj.getElement().onkeyup = ""
}

请注意当对象获得焦点时我应该如何设置onkeyup事件,但是当我激活输入时,它就像我将validate()函数直接标记到{{ 1}}它只在我最初聚焦输入时验证。

编辑我设置这种方式的原因是,每次启动onfocus事件时,我都没有验证每一个表单元素因为表格通常涉及体面的数量的打字,所以很多。我通过简单地将onkeyup函数附加到validate()事件来实现它。我只是希望以这种方式限制它,所以没有不必要的处理。

你能不用其他事件设置事件,还是有更具体的事情我做错了?

任何帮助表示赞赏!


以下是一些可能有用的其他信息:

getElement方法

onkeyup

setEvents函数

function getElement() {
    return document.getElementById(this.id)
}

1 个答案:

答案 0 :(得分:2)

您正在直接致电validate。除非它返回一个函数,否则它将不起作用(也许你应该更彻底地阅读my other answer;))。我想你想要:

obj.getElement().onkeyup = function() {validate(obj)};

正如我在评论中所述,没有理由在focus上添加或删除事件处理程序。仅当元素接收输入时才会引发keyup事件,其他元素接收输入时