Browse Source

fix iscomplete

Robin Herbots 11 years ago
parent
commit
2fe2fd1ed6
2 changed files with 43 additions and 12 deletions
  1. 9 3
      js/jquery.inputmask.js
  2. 34 9
      qunit/tests.js

+ 9 - 3
js/jquery.inputmask.js

@@ -979,6 +979,7 @@
                                 setValidPosition(pos.begin, undefined, strict);
                                 opts.insertMode = !opts.insertMode;
                             }
+                            isSlctn = !opts.multi;
                         }
 
                         var radixPosition = getBuffer().join('').indexOf(opts.radixPoint);
@@ -1319,6 +1320,7 @@
             if (actionObj != undefined) {
                 switch (actionObj["action"]) {
                     case "isComplete":
+                        $el = $(actionObj["el"]);
                         return isComplete(actionObj["buffer"]);
                     case "unmaskedvalue":
                         $el = actionObj["$input"];
@@ -1360,6 +1362,7 @@
         };
 
         function multiMaskScope(el, masksets, opts) {
+            opts.multi = true;
             var $el = $(el), isRTL = el.dir == "rtl" || opts.numericInput;
 
             function mcaret(input, begin, end) {
@@ -1444,8 +1447,10 @@
                             validPositionCount++;
                         }
                         if (validPositionCount > lpc
-                            || (validPositionCount == lpc && cp > caretPos)
-                            || (validPositionCount == lpc && cp == caretPos && lvp < lastValidPosition)) {
+                            || (validPositionCount == lpc && cp > caretPos && lvp > lastValidPosition)
+                            || (validPositionCount == lpc && cp == caretPos && lvp < lastValidPosition)
+                            ) {
+                            //console.log("lvp " + lastValidPosition + " vpc " + validPositionCount + " caret " + caretPos + " ams " + ndx);
                             lpc = validPositionCount;
                             cp = caretPos;
                             activeMasksetIndex = ndx;
@@ -1591,6 +1596,7 @@
                 ignorables: [8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],
                 isComplete: undefined, //override for isComplete - args => buffer, opts - return true || false
                 //multi-masks
+                multi: false, //do not alter - internal use
                 nojumps: false, //do not jump over fixed parts in the mask
                 nojumpsThreshold: 0, //start nojumps as of
                 determineActiveMasksetIndex: undefined //override determineActiveMasksetIndex - args => eventType, elmasks - return int
@@ -1689,7 +1695,7 @@
                         if (this.data('_inputmask')) {
                             maskset = this.data('_inputmask')['maskset'];
                             opts = this.data('_inputmask')['opts'];
-                            return maskScope(maskset, opts, { "action": "isComplete", "buffer": this[0]._valueGet().split('') });
+                            return maskScope(maskset, opts, { "action": "isComplete", "buffer": this[0]._valueGet().split(''), "el": this });
                         } else return true;
                     case "getmetadata": //return mask metadata if exists
                         if (this.data('_inputmask')) {

+ 34 - 9
qunit/tests.js

@@ -836,7 +836,7 @@ asyncTest("inputmask({ mask: [\"99999\", \"99999-9999\", \"999999-9999\"]]}) - i
     $("#testmask")[0].focus();
     $("#testmask").Type("123456");
     setTimeout(function () {
-        equal($("#testmask").val(), "___6-54321", "Result " + $("#testmask").val());
+        equal($("#testmask").val(), "____-654321", "Result " + $("#testmask").val());
         start();
         $("#testmask").remove();
     }, 0);
@@ -848,7 +848,18 @@ asyncTest("inputmask({ mask: ['9 AAA-AAA', 'A 999-999'] }) ", function () {
     $("#testmask").inputmask({ mask: ['9 AAA-AAA', 'A 999-999'] });
 
     $("#testmask").Type("1abc");
-    caret($("#testmask"), 0, 9);
+    setTimeout(function () {
+        equal($("#testmask").val(), "1 ABC-___", "Result " + $("#testmask").val());
+        start();
+        $("#testmask").remove();
+    }, 0);
+});
+
+asyncTest("inputmask({ mask: ['9 AAA-AAA', 'A 999-999'] }) ", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    $("#testmask").inputmask({ mask: ['9 AAA-AAA', 'A 999-999'] });
+
     $("#testmask").Type("a123");
     setTimeout(function () {
         equal($("#testmask").val(), "A 123-___", "Result " + $("#testmask").val());
@@ -2011,11 +2022,13 @@ test("inputmask('Regex', { regex: \"(abc){2,4}(def)\" }); - Flyarbonkers regex a
 
 module("Phone masks")
 
-asyncTest("inputmask(\"phone be\") - value=\"32473890428\"", 1, function () {
+asyncTest("inputmask(\"phone be\") - type \"473890428\"", 1, function () {
     var $fixture = $("#qunit-fixture");
-    $fixture.append('<input type="text" id="testmask" value="32473890428" />');
+    $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("phonebe", { "url": "https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/js/phone-codes/phone-be.json" });
 
+	$("#testmask").Type("473890428");
+	
     setTimeout(function () {
         equal($("#testmask").val(), "+32(473)89-04-28", "Result " + $("#testmask").val());
         start();
@@ -2023,6 +2036,17 @@ asyncTest("inputmask(\"phone be\") - value=\"32473890428\"", 1, function () {
     }, 0);
 });
 
+asyncTest("inputmask(\"phone be\") - value \"32473890428\"", 1, function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" value="32473890428" />');
+    $("#testmask").inputmask("phonebe", { "url": "https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/js/phone-codes/phone-be.json" });
+
+    setTimeout(function () {
+        equal($("#testmask").val(), "+32(473)89-04-28", "Result " + $("#testmask").val());
+        start();
+        $("#testmask").remove();
+    }, 0);
+});
 
 asyncTest("inputmask(\"phone\") - value=\"+32(473)890-428\"", 1, function () {
     var $fixture = $("#qunit-fixture");
@@ -2077,7 +2101,7 @@ asyncTest("inputmask(\"phone\") - Brazil switch", 1, function () {
     $fixture.append('<input type="text" id="testmask" value="55121234-1234" />');
     $("#testmask").inputmask("phone", { "url": "https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/js/phone-codes/phone-codes.json" });
 
-    setTimeout(function () {
+ 
         $("#testmask")[0].focus();
         caret($("#testmask"), $("#testmask")[0].value.length); //for FF
         $("#testmask").SendKey(keyCodes.BACKSPACE);
@@ -2085,10 +2109,11 @@ asyncTest("inputmask(\"phone\") - Brazil switch", 1, function () {
         $("#testmask").SendKey(keyCodes.BACKSPACE);
         $("#testmask").SendKey(keyCodes.BACKSPACE);
         $("#testmask").SendKey(keyCodes.BACKSPACE);
-        $("#testmask").Type("451234");
-        equal($("#testmask").val(), "+55-12-12345-1234", "Result " + $("#testmask").val());
-        start();
-        $("#testmask").remove();
+		$("#testmask").Type("451234");
+		setTimeout(function () {
+			equal($("#testmask").val(), "+55-12-12345-1234", "Result " + $("#testmask").val());
+			start();
+			$("#testmask").remove();
     }, 0);
 });