javascript - Applying multiple extenders in knockout -


i have following javascript code

function appviewmodel(){     this.myvalue = ko.observable().extend({ minnumber: "5"}).extend({ maxnumber: "20" }); }  ko.extenders.minnumber = function(target, minvalue){     target.haserror = ko.observable();     target.errormessage = ko.observable();      function validate(newvalue){         target.haserror(parseint(newvalue) < parseint(minvalue) ? true : false);         target.errormessage(parseint(newvalue) < parseint(minvalue) ? "minval" : "");     }      validate(target());      target.subscribe(validate);      return target; };  ko.extenders.maxnumber = function(target, maxvalue){     target.haserror = ko.observable();     target.errormessage = ko.observable();      function validate(newvalue){         target.haserror(parseint(newvalue) > parseint(maxvalue) ? true : false);         target.haserror(parseint(newvalue) > parseint(maxvalue) ? "maxval" : "");     }      validate(target());      target.subscribe(validate);      return target; };  ko.applybindings(new appviewmodel()); 

and following html

<input data-bind="value: myvalue, valueupdate: 'afterkeydown'"/><br/> <span data-bind="text: myvalue"></span> <span data-bind="text: myvalue.errormessage"></span> <span data-bind="text: myvalue.haserror"></span> 

what trying achieve validation on observable minimum , maximum integer value. code works http://jsfiddle.net/gazzo100uk/nctpx/5/ unsure why works instance why maxnumber not clear errormessage property in validate function if integer less 5 in example or vice versa min.

what order these functions fired?

like say, want don't understand how working , honest never expected work.

can shed light please?

regards, gary

i think main issue causing "work" not setting errormessage in maxnumber extender, not being cleared inappropriately:

function validate(newvalue){     target.haserror(parseint(newvalue) > parseint(maxvalue) ? true : false);     target.haserror(parseint(newvalue) > parseint(maxvalue) ? "maxval" : ""); } 

Comments

Popular posts from this blog

user interface - Python attempting to create a simple gui, getting "AttributeError: 'MainMenu' object has no attribute 'intro_screen'" -

jquery - Common JavaScript snippet to share files on Google Drive, Dropbox, Box.net or SkyDrive -

Android Gson.fromJson error -