开发者

nested object events

开发者 https://www.devze.com 2023-02-28 20:27 出处:网络
I\'m working on a validation project and I currently have it set up where my inputs are listed as objects. I currently have this code to setup and run the events:

I'm working on a validation project and I currently have it set up where my inputs are listed as objects. I currently have this code to setup and run the events:

setup method and functions used

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 = ""
}

Take note to how I have it where the onkeyup event should set when the object is receives focus, However when I activate the input it acts like I tagged the validate() function directly to the onfocus and it only validates when I initially focus the input.

edit the reason I have it set up this way is so that I don't have every single one of my form elements validating each time I launch an onkeyup event(which would be a lot since forms usually involve a decent amount of typing). I got it to work by simply attaching the validate() function to the onkeyup event. I just would prefer limit it this way so the there's no unnecessary processing.

Can you not set events with other events or is there something more specific that I'm doing wrong?

Any help is appreciated!


Here is some additional information that might help:

getElement Method

开发者_JAVA百科
function getElement() {
    return document.getElementById(this.id)
}

setEvents function

function setEvents() {
    firstName.setup(firstName)
}


You are calling validate directly. Unless it is returning a function, it won't work (maybe you should have read my other answer more thoroughly ;)). I think you want:

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

And as I stated in my comment, there is no reason to add or remove the event handler on focus. The keyup event is only raised if the element receives input, so not when other elements receive input.

0

精彩评论

暂无评论...
验证码 换一张
取 消