ソースを参照

Numerica mask not run in Galaxy S5 + Chrome + Android #1357

Robin Herbots 9 年 前
コミット
944bf22462
2 ファイル変更44 行追加7 行削除
  1. 6 7
      qunit/simulator.js
  2. 38 0
      qunit/tests_inputeventonly.js

+ 6 - 7
qunit/simulator.js

@@ -84,24 +84,21 @@
 		}
 		}
 
 
 		switch (keyCode) {
 		switch (keyCode) {
-			case Inputmask.keyCode.LEFT:
-			{
+			case Inputmask.keyCode.LEFT: {
 				if (modifier == undefined) {
 				if (modifier == undefined) {
 					var pos = $.caret(this);
 					var pos = $.caret(this);
 					$.caret(this, pos.begin - 1);
 					$.caret(this, pos.begin - 1);
 					break;
 					break;
 				}
 				}
 			}
 			}
-			case Inputmask.keyCode.RIGHT:
-			{
+			case Inputmask.keyCode.RIGHT: {
 				if (modifier == undefined) {
 				if (modifier == undefined) {
 					var pos = $.caret(this);
 					var pos = $.caret(this);
 					$.caret(this, pos.begin + 1);
 					$.caret(this, pos.begin + 1);
 					break;
 					break;
 				}
 				}
 			}
 			}
-			default:
-			{
+			default: {
 				var keydown = new $.Event("keydown"),
 				var keydown = new $.Event("keydown"),
 					keypress = new $.Event("keypress"),
 					keypress = new $.Event("keypress"),
 					keyup = new $.Event("keyup");
 					keyup = new $.Event("keyup");
@@ -182,9 +179,11 @@
 		$input.trigger('paste');
 		$input.trigger('paste');
 	}
 	}
 
 
-	$.fn.input = function (inputStr) {
+	$.fn.input = function (inputStr, caretBegin, caretEnd) {
 		var input = this.nodeName ? this : this[0];
 		var input = this.nodeName ? this : this[0];
 		input.inputmask.__valueSet.call(input, inputStr);
 		input.inputmask.__valueSet.call(input, inputStr);
+		if (caretBegin !== undefined)
+			$.caret(input, caretBegin, caretEnd);
 		$(input).trigger("input");
 		$(input).trigger("input");
 	}
 	}
 }));
 }));

+ 38 - 0
qunit/tests_inputeventonly.js

@@ -35,4 +35,42 @@ define([
 		assert.equal(testmask.value, "ABC-1234-1234-ABC-ABC", "Result " + testmask.value);
 		assert.equal(testmask.value, "ABC-1234-1234-ABC-ABC", "Result " + testmask.value);
 	});
 	});
 
 
+	qunit.test("(999) 999-9999", function (assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append('<input type="text" id="testmask" />');
+		var testmask = document.getElementById("testmask");
+		Inputmask("(999) 999-9999", {inputEventOnly: true}).mask(testmask);
+
+		testmask.focus();
+		//simulate input
+		$(testmask).input("1231231234");
+
+		assert.equal(testmask.value, "(123) 123-1234", "Result " + testmask.value);
+	});
+
+	qunit.test("(999) 999-9999 - type abc", function (assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append('<input type="text" id="testmask" />');
+		var testmask = document.getElementById("testmask");
+		Inputmask("(999) 999-9999", {inputEventOnly: true}).mask(testmask);
+
+		testmask.focus();
+		//simulate input
+		$(testmask).input("abc");
+		assert.ok($.caret(testmask).begin == 1, "Caret " + $.caret(testmask).begin);
+	});
+
+	qunit.test("(999) 999-9999 - type 123 + backspace", function (assert) {
+		var $fixture = $("#qunit-fixture");
+		$fixture.append('<input type="text" id="testmask" />');
+		var testmask = document.getElementById("testmask");
+		Inputmask("(999) 999-9999", {inputEventOnly: true}).mask(testmask);
+
+		testmask.focus();
+		//simulate input
+		$(testmask).input("123");
+		//simulate backspace
+		$(testmask).input("(12) ___-____", 3);
+		assert.ok($.caret(testmask).begin == 3, "Caret " + $.caret(testmask).begin);
+	});
 });
 });