javascript - keydown event new value -


browser: google chrome v19.0.1084.52

i have textbox needs number less or equal 255, on keydown want check if value above or equal 255 else prevent event.

in console when console.log event show event.srcelement.value value appear i.e. 12 => 123, when console.log event.srcelement.value show input was, not be.

console.log's happening 1 after other, nothing in between, no pauses.

how can find new value of textbox on keydown , why console.log returning different results?

thanks

here's code:

function inputnumeric(event,max) {      console.log (event);     console.log ('event.originalevent.srcelement.value: '+event.originalevent.srcelement.value);     console.log ('event.srcelement.value: '+event.srcelement.value);  }  $("#rs485addr").keydown(function(event) {     inputnumeric(event); }); 

console.log:

event.originalevent.srcelement.value: 12 event.srcelement.value: 12 

event.srcelement:

accept: "" accesskey: "" align: "" alt: "" attributes: namednodemap autocomplete: "" autofocus: false baseuri: "http://10.50.50.60/controller/?bid=10" checked: false childelementcount: 0 childnodes: nodelist[0] children: htmlcollection[0] classlist: domtokenlist classname: "width-60" clientheight: 18 clientleft: 2 clienttop: 2 clientwidth: 62 contenteditable: "inherit" dataset: domstringmap defaultchecked: false defaultvalue: "1" dir: "" dirname: "" disabled: false draggable: false files: null firstchild: null firstelementchild: null form: null formaction: "" formenctype: "application/x-www-form-urlencoded" formmethod: "get" formnovalidate: false formtarget: "" hidden: false id: "rs485addr" incremental: false indeterminate: false innerhtml: "" innertext: "" iscontenteditable: false jquery17102950612970162183: 22 labels: nodelist[1] lang: "" lastchild: null lastelementchild: null localname: "input" max: "" maxlength: 3 min: "" multiple: false name: "" namespaceuri: "http://www.w3.org/1999/xhtml" nextelementsibling: null nextsibling: text nodename: "input" nodetype: 1 nodevalue: null offsetheight: 22 offsetleft: 183 offsetparent: htmlbodyelement offsettop: 365 offsetwidth: 66 onabort: null onbeforecopy: null onbeforecut: null onbeforepaste: null onblur: null onchange: null onclick: null oncontextmenu: null oncopy: null oncut: null ondblclick: null ondrag: null ondragend: null ondragenter: null ondragleave: null ondragover: null ondragstart: null ondrop: null onerror: null onfocus: null oninput: null oninvalid: null onkeydown: null onkeypress: null onkeyup: null onload: null onmousedown: null onmousemove: null onmouseout: null onmouseover: null onmouseup: null onmousewheel: null onpaste: null onreset: null onscroll: null onsearch: null onselect: null onselectstart: null onsubmit: null onwebkitfullscreenchange: null onwebkitfullscreenerror: null onwebkitspeechchange: null outerhtml: "<input class="width-60" id="rs485addr" maxlength="3" type="textbox" value="1">" outertext: "" ownerdocument: htmldocument parentelement: htmlspanelement parentnode: htmlspanelement pattern: "" placeholder: "" prefix: null previouselementsibling: htmllabelelement previoussibling: text readonly: false required: false scrollheight: 16 scrollleft: 0 scrolltop: 0 scrollwidth: 60 selectiondirection: "forward" selectionend: 3 selectionstart: 3 size: 20 spellcheck: true src: "" step: "" style: cssstyledeclaration tabindex: 0 tagname: "input" textcontent: "" title: "" translate: true type: "text" usemap: "" validationmessage: "" validity: validitystate value: "123" valueasdate: null valueasnumber: nan webkitgrammar: false webkitregionoverflow: "undefined" webkitspeech: false webkitdirectory: false webkitdropzone: "" willvalidate: true 

i'm not sure if of help, when had deal similar situation in event listener used settimeout() 1ms timeout put main functionality checking value, etc.

that because when keydown event fired input field not yet populated new data.

simple jquery example:

$('#input').on('keydown', function(e) {   var field = $(this);   var prevvalue = field.val();   settimeout(function() {     // check if new value more or equal 255     if (field.val() >= 255) {       // fill previous value       field.val(prevvalue);     }    }, 1); }); 

update

use 'input' event in modern browsers.

var prevvalue = 0; $('#input').on('input', function(e) {   var field = $(this);   // check if new value more or equal 255   if (field.val() >= 255) {     // fill previous value     field.val(prevvalue);   } else {     // if value lower 255 set in prev value.     prevvalue = field.val();   } }); 

Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -