Browse Source

update grunt + check native support for inputtypes

Robin Herbots 11 years ago
parent
commit
f5cc367e8f
2 changed files with 33 additions and 51 deletions
  1. 21 45
      Gruntfile.js
  2. 12 6
      js/jquery.inputmask.js

+ 21 - 45
Gruntfile.js

@@ -9,54 +9,30 @@ module.exports = function (grunt) {
             '*/\n';
             '*/\n';
     }
     }
 
 
+    function createUglifyConfig(path) {
+        var uglifyConfig = {};
+        var srcFiles = grunt.file.expand(path + "/*.js");
+        for (var srcNdx in srcFiles) {
+            var dstFile = srcFiles[srcNdx].replace("js/", "");
+            uglifyConfig[dstFile] = {
+                dest: 'dist/inputmask/' + dstFile,
+                src: srcFiles[srcNdx],
+                options: { banner: createBanner(dstFile) }
+            };
+        }
+        uglifyConfig["inputmaskbundle"] = {
+            files: {
+                'dist/<%= pkg.name %>.bundle.js': srcFiles
+            },
+            options: { banner: createBanner('<%= pkg.name %>.bundle') }
+        }
+        return uglifyConfig;
+    }
+
     // Project configuration.
     // Project configuration.
     grunt.initConfig({
     grunt.initConfig({
         pkg: grunt.file.readJSON('package.json'),
         pkg: grunt.file.readJSON('package.json'),
-        uglify: {
-            "inputmask": {
-                dest: 'dist/inputmask/<%= pkg.name %>.js',
-                src: 'js/<%= pkg.name %>.js',
-                options: { banner: createBanner('<%= pkg.name %>') }
-            },
-            "inputmask.extensions": {
-                dest: 'dist/inputmask/<%= pkg.name %>.extensions.js',
-                src: 'js/<%= pkg.name %>.extensions.js',
-                options: { banner: createBanner('<%= pkg.name %>.extensions') }
-            },
-            "inputmask.date.extensions": {
-                dest: 'dist/inputmask/<%= pkg.name %>.date.extensions.js',
-                src: 'js/<%= pkg.name %>.date.extensions.js',
-                options: { banner: createBanner('<%= pkg.name %>.date.extensions') }
-            },
-            "inputmask.numeric.extensions": {
-                dest: 'dist/inputmask/<%= pkg.name %>.numeric.extensions.js',
-                src: 'js/<%= pkg.name %>.numeric.extensions.js',
-                options: { banner: createBanner('<%= pkg.name %>.numeric.extensions') }
-            },
-            "inputmask.phone.extensions": {
-                dest: 'dist/inputmask/<%= pkg.name %>.phone.extensions.js',
-                src: 'js/<%= pkg.name %>.phone.extensions.js',
-                options: { banner: createBanner('<%= pkg.name %>.phone.extensions') }
-            },
-            "inputmask.regex.extensions": {
-                dest: 'dist/inputmask/<%= pkg.name %>.regex.extensions.js',
-                src: 'js/<%= pkg.name %>.regex.extensions.js',
-                options: { banner: createBanner('<%= pkg.name %>.regex.extensions') }
-            },
-            "inputmaskbundle": {
-                files: {
-                    'dist/<%= pkg.name %>.bundle.js': [
-                        'js/<%= pkg.name %>.js',
-                        'js/<%= pkg.name %>.extensions.js',
-                        'js/<%= pkg.name %>.date.extensions.js',
-                        'js/<%= pkg.name %>.numeric.extensions.js',
-                        'js/<%= pkg.name %>.phone.extensions.js',
-                        'js/<%= pkg.name %>.regex.extensions.js'
-                    ]
-                },
-                options: { banner: createBanner('<%= pkg.name %>.bundle') }
-            }
-        },
+        uglify: createUglifyConfig("js"),
         clean: ["dist"],
         clean: ["dist"],
         qunit: {
         qunit: {
             files: ['qunit/qunit.html']
             files: ['qunit/qunit.html']

+ 12 - 6
js/jquery.inputmask.js

@@ -18,16 +18,22 @@
         //helper functions
         //helper functions
         function isInputEventSupported(eventName) {
         function isInputEventSupported(eventName) {
             var el = document.createElement('input'),
             var el = document.createElement('input'),
-                eventName = 'on' + eventName,
-                isSupported = (eventName in el);
+                evName = 'on' + eventName,
+                isSupported = (evName in el);
             if (!isSupported) {
             if (!isSupported) {
-                el.setAttribute(eventName, 'return;');
-                isSupported = typeof el[eventName] == 'function';
+                el.setAttribute(evName, 'return;');
+                isSupported = typeof el[evName] == 'function';
             }
             }
-            el = null;
+            document.remove(el);
             return isSupported;
             return isSupported;
         }
         }
 
 
+        function isInputTypeSupported(inputType) {
+            var el = document.createElement('input');
+            el.setAttribute("type", inputType);
+            return el.type !== "text";
+        }
+
         function resolveAlias(aliasStr, options, opts) {
         function resolveAlias(aliasStr, options, opts) {
             var aliasDefinition = opts.aliases[aliasStr];
             var aliasDefinition = opts.aliases[aliasStr];
             if (aliasDefinition) {
             if (aliasDefinition) {
@@ -1479,7 +1485,7 @@
             }
             }
             function mask(el) {
             function mask(el) {
                 $el = $(el);
                 $el = $(el);
-                if ($el.is(":input") && $el.attr("type") != "number") {
+                if ($el.is(":input") && !isInputTypeSupported($el.attr("type"))) {
                     //store tests & original buffer in the input element - used to get the unmasked value
                     //store tests & original buffer in the input element - used to get the unmasked value
                     $el.data('_inputmask', {
                     $el.data('_inputmask', {
                         'maskset': maskset,
                         'maskset': maskset,