/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml */ dojo.provide("dojo.widget.RealNumberTextbox"); dojo.require("dojo.widget.IntegerTextbox"); dojo.require("dojo.validate.common"); dojo.widget.defineWidget( "dojo.widget.RealNumberTextbox", dojo.widget.IntegerTextbox, { /* summary A subclass that extends IntegerTextbox. Over-rides isValid/isInRange to test for real number input. Has 5 new properties that can be specified as attributes in the markup. places: Integer The exact number of decimal places. If omitted, it's unlimited and optional. exponent: Boolean Can be true or false. If omitted the exponential part is optional. eSigned: Boolean Is the exponent signed? Can be true or false, if omitted the sign is optional. min: Number Minimum signed value. Default is -Infinity. max: Number Maximum signed value. Default is +Infinity */ mixInProperties: function(localProperties, frag){ // First initialize properties in super-class. dojo.widget.RealNumberTextbox.superclass.mixInProperties.apply(this, arguments); // Get properties from markup attributes, and assign to flags object. if (localProperties.places){ this.flags.places = Number(localProperties.places); } if((localProperties.exponent == "true")|| (localProperties.exponent == "always")){ this.flags.exponent = true; }else if((localProperties.exponent == "false")||(localProperties.exponent == "never")){ this.flags.exponent = false; }else{ this.flags.exponent = [ true, false ]; // optional } if((localProperties.esigned == "true")||(localProperties.esigned == "always")){ this.flags.eSigned = true; }else if((localProperties.esigned == "false")||(localProperties.esigned == "never")){ this.flags.eSigned = false; }else{ this.flags.eSigned = [ true, false ]; // optional } if(localProperties.min){ this.flags.min = parseFloat(localProperties.min); } if(localProperties.max){ this.flags.max = parseFloat(localProperties.max); } }, // Over-ride for real number validation isValid: function(){ return dojo.validate.isRealNumber(this.textbox.value, this.flags); }, isInRange: function(){ return dojo.validate.isInRange(this.textbox.value, this.flags); } } );