src/ztfy/myams/resources/js/myams.js
changeset 167 bf78f1c35edd
parent 160 6c271ae9cfd3
child 171 d1a43750fea2
--- a/src/ztfy/myams/resources/js/myams.js	Wed Mar 09 14:52:15 2016 +0100
+++ b/src/ztfy/myams/resources/js/myams.js	Mon Mar 21 16:02:11 2016 +0100
@@ -7,7 +7,7 @@
  *
  * Custom administration and application skin tools
  * Released under Zope Public License ZPL 1.1
- * ©2014-2015 Thierry Florac <tflorac@ulthar.net>
+ * ©2014-2016 Thierry Florac <tflorac@ulthar.net>
  */
 
 (function($, globals) {
@@ -2307,7 +2307,7 @@
 							callbacks: new_plugin.callback ? [new_plugin.callback] : [],
 							register: new_plugin.register,
 							async: new_plugin.async
-						}
+						};
 					}
 				}
 
@@ -3026,6 +3026,40 @@
 			},
 
 			/**
+			 * JQuery input-mask plug-in
+			 *
+			 * Mask value can be set in a "data-input-mask" attribute defined:
+			 * - as a simple string containing mask
+			 * - as a JSON object defining all mask attributes, for example:
+			 *   data-input-mask='{"alias": "integer", "allowPlus": false, "allowMinus": false}'
+			 */
+			inputmask: function(element) {
+				var masks = $('[data-input-mask]', element);
+				if (masks.length > 0) {
+					ams.ajax.check($.fn.inputmask,
+								   ams.baseURL + 'ext/jquery-inputmask-bundle-3.2.8' + ams.devext + '.js',
+								   function() {
+										masks.each(function() {
+											var input = $(this);
+											var data = input.data();
+											var data_options;
+											if (typeof(data.inputMask) === 'object') {
+												data_options = data.inputMask;
+											} else {
+												data_options = {
+													mask: data.inputMask.toString()
+												};
+											}
+											var settings = $.extend({}, data_options, data.amsInputmaskOptions);
+											settings = ams.executeFunctionByName(data.amsInputmaskInitCallback, input, settings) || settings;
+											var plugin = input.inputmask(settings);
+											ams.executeFunctionByName(data.amsInputmaskAfterInitCallback, input, plugin, settings);
+										});
+								   });
+				}
+			},
+
+			/**
 			 * JQuery date picker
 			 */
 			datepicker: function(element) {
@@ -3227,6 +3261,12 @@
 																	: ams.getFunctionByName(data.amsFormInvalidHandler)
 																: undefined
 											};
+											$('[data-ams-validate-rules]', form).each(function(index) {
+												if (index === 0) {
+													data_options.rules = {};
+												}
+												data_options.rules[$(this).attr('name')] = $(this).data('ams-validate-rules');
+											});
 											var settings = $.extend({}, data_options, data.amsValidateOptions);
 											settings = ams.executeFunctionByName(data.amsValidateInitCallback, form, settings) || settings;
 											var plugin = form.validate(settings);