UNPKG

alpaca

Version:

Alpaca provides the easiest and fastest way to generate interactive forms for the web and mobile devices. It runs simply as HTML5 or more elaborately using Bootstrap, jQuery Mobile or jQuery UI. Alpaca uses Handlebars to process JSON schema and provide

143 lines (118 loc) 3.99 kB
(function($) { var Alpaca = $.alpaca; Alpaca.Fields.ZipcodeField = Alpaca.Fields.TextField.extend( /** * @lends Alpaca.Fields.ZipcodeField.prototype */ { /** * @see Alpaca.Fields.TextField#getFieldType */ getFieldType: function() { return "zipcode"; }, /** * @see Alpaca.Fields.TextField#setup */ setup: function() { this.base(); this.options.format = (this.options.format ? this.options.format : "nine"); if (this.options.format === "nine") { this.schema.pattern = Alpaca.regexps["zipcode-nine"]; } else if (this.options.format === "five") { this.schema.pattern = Alpaca.regexps["zipcode-five"]; } else { Alpaca.logError("The configured zipcode format: " + this.options.format + " is not a legal value [five, nine]"); // default to nine format this.options.format = "nine"; this.schema.pattern = Alpaca.regexps["zipcode-nine"]; } // set mask string if (this.options.format === "nine") { this.options["maskString"] = "99999-9999"; } else if (this.options.format === "five") { this.options["maskString"] = "99999"; } }, /** * @see Alpaca.Fields.TextField#handleValidate */ handleValidate: function() { var baseStatus = this.base(); var valInfo = this.validation; if (!valInfo["invalidPattern"]["status"]) { if (this.options.format === "nine") { valInfo["invalidPattern"]["message"] = this.getMessage("invalidZipcodeFormatNine"); } else if (this.options.format === "five") { valInfo["invalidPattern"]["message"] = this.getMessage("invalidZipcodeFormatFive"); } } return baseStatus; } /* builder_helpers */ , /** * @private * @see Alpaca.Fields.TextField#getSchemaOfOptions */ getSchemaOfOptions: function() { return Alpaca.merge(this.base(), { "properties": { "format": { "title": "Format", "description": "How to represent the zipcode field", "type": "string", "default": "five", "enum":["five", "nine"], "readonly": true } } }); }, /** * @private * @see Alpaca.Fields.TextField#getOptionsForOptions */ getOptionsForOptions: function() { return Alpaca.merge(this.base(), { "fields": { "format": { "type": "text" } } }); }, /** * @see Alpaca.Fields.TextField#getTitle */ getTitle: function() { return "Zipcode Field"; }, /** * @see Alpaca.Fields.TextField#getDescription */ getDescription: function() { return "Provides a five or nine-digital US zipcode control with validation."; } /* end_builder_helpers */ }); Alpaca.registerMessages({ "invalidZipcodeFormatFive": "Invalid Five-Digit Zipcode (#####)", "invalidZipcodeFormatNine": "Invalid Nine-Digit Zipcode (#####-####)" }); Alpaca.registerFieldClass("zipcode", Alpaca.Fields.ZipcodeField); Alpaca.registerDefaultFormatFieldMapping("zipcode", "zipcode"); })(jQuery);