// ========================================================================== // Project: SproutCore
- JavaScript Application Framework // Copyright: ©2006-2011 Strobe Inc. and contributors. // Portions ©2008-2011 Apple Inc. All rights reserved. // License: Licensed under MIT license (see license.js) // ==========================================================================
sc_require('validators/validator') ;
/**
Handles parsing and validating of positive integers. @extends SC.Validator @author Nirumal Thomas @version 1.0 @class
*/ SC
.Validator.PositiveInteger = SC
.Validator.extend( /** @scope SC
.Validator.PositiveInteger.prototype */ {
/** Default Value to be displayed. If the value in the text field is null, undefined or an empty string, it will be replaced by this value. @property @type Number @default null */ defaultValue: null, fieldValueForObject: function(object, form, field) { switch(SC.typeOf(object)) { case SC.T_NUMBER: object = object.toFixed(0) ; break ; case SC.T_NULL: case SC.T_UNDEFINED: object = this.get('defaultValue') ; break ; } return object ; }, objectForFieldValue: function(value, form, field) { // strip out commas value = value.replace(/,/g,''); switch(SC.typeOf(value)) { case SC.T_STRING: if (value.length === 0) { value = this.get('defaultValue') ; } else { value = parseInt(value, 0) ; } break ; case SC.T_NULL: case SC.T_UNDEFINED: value = this.get('defaultValue') ; break ; } if(isNaN(value)) return this.get('defaultValue'); return value ; }, validate: function(form, field) { var value = field.get('fieldValue') ; return (value === '') || !isNaN(value) ; }, validateError: function(form, field) { var label = field.get('errorLabel') || 'Field' ; return SC.$error(SC.String.loc("Invalid.Number(%@)", label), label) ; }, /** Allow only numbers */ validateKeyDown: function(form, field, charStr) { var text = field.$input().val(); if (!text) text=''; text+=charStr; if(charStr.length===0) return true ; else return text.match(/^[0-9\0]*/)[0]===text; }
}) ;