javascript - Listen for keyup on all input fields -


im trying capture keyup on input fields on page.

my current code is:

var els = document.queryselectorall('input'); (var = 0; < els.length; += 1) {     addevent('keyup', els[i], makehandler(els[i])); }  function makehandler(field) {            console.log(field.value);  }  function addevent(evnt, elem, func) {     if (elem.addeventlistener) {         elem.addeventlistener(evnt,func,false);     } else if (elem.attachevent) {          elem.attachevent("on"+evnt, function(e) {             e = e || window.event;              if (!e.preventdefault) {                 e.preventdefault = preventdefaultonie;             }             func.call(this, e);         });     } else { // no             elem[evnt] = func;            } } 

but reason capturing value on page load, not once begin type in of fields.

any ideas i'm doing wrong?

the problem makehandler function. makehandler(els[i]) being evaluated , return value (undefined, in case) being passed addevent handler. try:

function makehandler(field) {     return function() {          console.log(field.value);     }; } 

this way, makehandler(els[i]) return function addevent can attach keyup.

alternatively, use:

function makehandler() {     console.log(this.value); // 'this' field event occurred on } 

and use:

addevent('keyup', els[i], makehandler); 

side-note

i noticed slight error in code:

else { // no         elem[evnt] = func;        } 

i think want set elem["on" + evnt] instead.


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -