inputmask.date.extensions.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  1. /*
  2. Input Mask plugin extensions
  3. http://github.com/RobinHerbots/jquery.inputmask
  4. Copyright (c) 2010 - Robin Herbots
  5. Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
  6. Version: 0.0.0-dev
  7. Optional extensions on the jquery.inputmask base
  8. */
  9. (function (factory) {
  10. if (typeof define === "function" && define.amd) {
  11. define(["inputmask.dependencyLib", "inputmask"], factory);
  12. } else if (typeof exports === "object") {
  13. module.exports = factory(require("./inputmask.dependencyLib"), require("./inputmask"));
  14. } else {
  15. factory(window.dependencyLib || jQuery, window.Inputmask);
  16. }
  17. }
  18. (function ($, Inputmask) {
  19. function isLeapYear(year) {
  20. return isNaN(year) || new Date(year, 2, 0).getDate() === 29;
  21. }
  22. //date & time aliases
  23. Inputmask.extendDefinitions({
  24. "h": { //hours
  25. validator: "[01][0-9]|2[0-3]",
  26. cardinality: 2,
  27. prevalidator: [{
  28. validator: "[0-2]",
  29. cardinality: 1
  30. }]
  31. },
  32. "s": { //seconds || minutes
  33. validator: "[0-5][0-9]",
  34. cardinality: 2,
  35. prevalidator: [{
  36. validator: "[0-5]",
  37. cardinality: 1
  38. }]
  39. },
  40. "d": { //basic day
  41. validator: "0[1-9]|[12][0-9]|3[01]",
  42. cardinality: 2,
  43. prevalidator: [{
  44. validator: "[0-3]",
  45. cardinality: 1
  46. }]
  47. },
  48. "m": { //basic month
  49. validator: "0[1-9]|1[012]",
  50. cardinality: 2,
  51. prevalidator: [{
  52. validator: "[01]",
  53. cardinality: 1
  54. }]
  55. },
  56. "y": { //basic year
  57. validator: "(19|20)\\d{2}",
  58. cardinality: 4,
  59. prevalidator: [{
  60. validator: "[12]",
  61. cardinality: 1
  62. }, {
  63. validator: "(19|20)",
  64. cardinality: 2
  65. }, {
  66. validator: "(19|20)\\d",
  67. cardinality: 3
  68. }]
  69. }
  70. });
  71. Inputmask.extendAliases({
  72. "dd/mm/yyyy": {
  73. mask: "1/2/y",
  74. placeholder: "dd/mm/yyyy",
  75. regex: {
  76. val1pre: new RegExp("[0-3]"), //daypre
  77. val1: new RegExp("0[1-9]|[12][0-9]|3[01]"), //day
  78. val2pre: function (separator) {
  79. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  80. return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])");
  81. }, //monthpre
  82. val2: function (separator) {
  83. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  84. return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))");
  85. } //month
  86. },
  87. leapday: "29/02/",
  88. separator: "/",
  89. yearrange: {
  90. minyear: 1900,
  91. maxyear: 2099
  92. },
  93. isInYearRange: function (chrs, minyear, maxyear) {
  94. if (isNaN(chrs)) return false;
  95. var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length)));
  96. var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));
  97. return (!isNaN(enteredyear) ? minyear <= enteredyear && enteredyear <= maxyear : false) ||
  98. (!isNaN(enteredyear2) ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false);
  99. },
  100. determinebaseyear: function (minyear, maxyear, hint) {
  101. var currentyear = (new Date()).getFullYear();
  102. if (minyear > currentyear) return minyear;
  103. if (maxyear < currentyear) {
  104. var maxYearPrefix = maxyear.toString().slice(0, 2);
  105. var maxYearPostfix = maxyear.toString().slice(2, 4);
  106. while (maxyear < maxYearPrefix + hint) {
  107. maxYearPrefix--;
  108. }
  109. var maxxYear = maxYearPrefix + maxYearPostfix;
  110. return minyear > maxxYear ? minyear : maxxYear;
  111. }
  112. if (minyear <= currentyear && currentyear <= maxyear) {
  113. var currentYearPrefix = currentyear.toString().slice(0, 2);
  114. while (maxyear < currentYearPrefix + hint) {
  115. currentYearPrefix--;
  116. }
  117. var currentYearAndHint = currentYearPrefix + hint;
  118. return currentYearAndHint < minyear ? minyear : currentYearAndHint;
  119. }
  120. return currentyear;
  121. },
  122. onKeyDown: function (e, buffer, caretPos, opts) {
  123. var $input = $(this);
  124. if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
  125. var today = new Date();
  126. $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString());
  127. $input.trigger("setvalue");
  128. }
  129. },
  130. getFrontValue: function (mask, buffer, opts) {
  131. var start = 0,
  132. length = 0;
  133. for (var i = 0; i < mask.length; i++) {
  134. if (mask.charAt(i) === "2") break;
  135. var definition = opts.definitions[mask.charAt(i)];
  136. if (definition) {
  137. start += length;
  138. length = definition.cardinality;
  139. } else length++;
  140. }
  141. return buffer.join("").substr(start, length);
  142. },
  143. postValidation: function (buffer, currentResult, opts) {
  144. var dayMonthValue, year, bufferStr = buffer.join("");
  145. if (opts.mask.indexOf("y") === 0) {
  146. year = bufferStr.substr(0, 4);
  147. dayMonthValue = bufferStr.substr(4, 11);
  148. } else {
  149. year = bufferStr.substr(6, 11);
  150. dayMonthValue = bufferStr.substr(0, 6);
  151. }
  152. return currentResult && (dayMonthValue !== opts.leapday ? true : isLeapYear(year));
  153. },
  154. definitions: {
  155. "1": { //val1 ~ day or month
  156. validator: function (chrs, maskset, pos, strict, opts) {
  157. var isValid = opts.regex.val1.test(chrs);
  158. if (!strict && !isValid) {
  159. if (chrs.charAt(1) === opts.separator || "-./".indexOf(chrs.charAt(1)) !== -1) {
  160. isValid = opts.regex.val1.test("0" + chrs.charAt(0));
  161. if (isValid) {
  162. maskset.buffer[pos - 1] = "0";
  163. return {
  164. "refreshFromBuffer": {
  165. start: pos - 1,
  166. end: pos
  167. },
  168. "pos": pos,
  169. "c": chrs.charAt(0)
  170. };
  171. }
  172. }
  173. }
  174. return isValid;
  175. },
  176. cardinality: 2,
  177. prevalidator: [{
  178. validator: function (chrs, maskset, pos, strict, opts) {
  179. var pchrs = chrs;
  180. if (!isNaN(maskset.buffer[pos + 1])) pchrs += maskset.buffer[pos + 1];
  181. var isValid = pchrs.length === 1 ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs);
  182. if (!strict && !isValid) {
  183. isValid = opts.regex.val1.test(chrs + "0");
  184. if (isValid) {
  185. maskset.buffer[pos] = chrs;
  186. maskset.buffer[++pos] = "0";
  187. return {
  188. "pos": pos,
  189. "c": "0"
  190. };
  191. }
  192. isValid = opts.regex.val1.test("0" + chrs);
  193. if (isValid) {
  194. maskset.buffer[pos] = "0";
  195. pos++;
  196. return {
  197. "pos": pos
  198. };
  199. }
  200. }
  201. return isValid;
  202. },
  203. cardinality: 1
  204. }]
  205. },
  206. "2": { //val2 ~ day or month
  207. validator: function (chrs, maskset, pos, strict, opts) {
  208. var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
  209. if (frontValue.indexOf(opts.placeholder[0]) !== -1) frontValue = "01" + opts.separator;
  210. var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);
  211. if (!strict && !isValid) {
  212. if (chrs.charAt(1) === opts.separator || "-./".indexOf(chrs.charAt(1)) !== -1) {
  213. isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0));
  214. if (isValid) {
  215. maskset.buffer[pos - 1] = "0";
  216. return {
  217. "refreshFromBuffer": {
  218. start: pos - 1,
  219. end: pos
  220. },
  221. "pos": pos,
  222. "c": chrs.charAt(0)
  223. };
  224. }
  225. }
  226. }
  227. return isValid;
  228. },
  229. cardinality: 2,
  230. prevalidator: [{
  231. validator: function (chrs, maskset, pos, strict, opts) {
  232. if (!isNaN(maskset.buffer[pos + 1])) chrs += maskset.buffer[pos + 1];
  233. var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
  234. if (frontValue.indexOf(opts.placeholder[0]) !== -1) frontValue = "01" + opts.separator;
  235. var isValid = chrs.length === 1 ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs);
  236. if (!strict && !isValid) {
  237. isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs);
  238. if (isValid) {
  239. maskset.buffer[pos] = "0";
  240. pos++;
  241. return {
  242. "pos": pos
  243. };
  244. }
  245. }
  246. return isValid;
  247. },
  248. cardinality: 1
  249. }]
  250. },
  251. "y": { //year
  252. validator: function (chrs, maskset, pos, strict, opts) {
  253. return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
  254. },
  255. cardinality: 4,
  256. prevalidator: [{
  257. validator: function (chrs, maskset, pos, strict, opts) {
  258. var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
  259. if (!strict && !isValid) {
  260. var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1);
  261. isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
  262. if (isValid) {
  263. maskset.buffer[pos++] = yearPrefix.charAt(0);
  264. return {
  265. "pos": pos
  266. };
  267. }
  268. yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2);
  269. isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
  270. if (isValid) {
  271. maskset.buffer[pos++] = yearPrefix.charAt(0);
  272. maskset.buffer[pos++] = yearPrefix.charAt(1);
  273. return {
  274. "pos": pos
  275. };
  276. }
  277. }
  278. return isValid;
  279. },
  280. cardinality: 1
  281. }, {
  282. validator: function (chrs, maskset, pos, strict, opts) {
  283. var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
  284. if (!strict && !isValid) {
  285. var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);
  286. isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);
  287. if (isValid) {
  288. maskset.buffer[pos++] = yearPrefix.charAt(1);
  289. return {
  290. "pos": pos
  291. };
  292. }
  293. yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);
  294. isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
  295. if (isValid) {
  296. maskset.buffer[pos - 1] = yearPrefix.charAt(0);
  297. maskset.buffer[pos++] = yearPrefix.charAt(1);
  298. maskset.buffer[pos++] = chrs.charAt(0);
  299. return {
  300. "refreshFromBuffer": {
  301. start: pos - 3,
  302. end: pos
  303. },
  304. "pos": pos
  305. };
  306. }
  307. }
  308. return isValid;
  309. },
  310. cardinality: 2
  311. }, {
  312. validator: function (chrs, maskset, pos, strict, opts) {
  313. return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
  314. },
  315. cardinality: 3
  316. }]
  317. }
  318. },
  319. insertMode: false,
  320. autoUnmask: false
  321. },
  322. "mm/dd/yyyy": {
  323. placeholder: "mm/dd/yyyy",
  324. alias: "dd/mm/yyyy", //reuse functionality of dd/mm/yyyy alias
  325. regex: {
  326. val2pre: function (separator) {
  327. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  328. return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
  329. }
  330. , //daypre
  331. val2: function (separator) {
  332. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  333. return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
  334. }
  335. , //day
  336. val1pre: new RegExp("[01]"), //monthpre
  337. val1: new RegExp("0[1-9]|1[012]") //month
  338. }
  339. ,
  340. leapday: "02/29/",
  341. onKeyDown: function (e, buffer, caretPos, opts) {
  342. var $input = $(this);
  343. if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
  344. var today = new Date();
  345. $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());
  346. $input.trigger("setvalue");
  347. }
  348. }
  349. }
  350. ,
  351. "yyyy/mm/dd": {
  352. mask: "y/1/2",
  353. placeholder: "yyyy/mm/dd",
  354. alias: "mm/dd/yyyy",
  355. leapday: "/02/29",
  356. onKeyDown: function (e, buffer, caretPos, opts) {
  357. var $input = $(this);
  358. if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
  359. var today = new Date();
  360. $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString());
  361. $input.trigger("setvalue");
  362. }
  363. }
  364. }
  365. ,
  366. "dd.mm.yyyy": {
  367. mask: "1.2.y",
  368. placeholder: "dd.mm.yyyy",
  369. leapday: "29.02.",
  370. separator: ".",
  371. alias: "dd/mm/yyyy"
  372. }
  373. ,
  374. "dd-mm-yyyy": {
  375. mask: "1-2-y",
  376. placeholder: "dd-mm-yyyy",
  377. leapday: "29-02-",
  378. separator: "-",
  379. alias: "dd/mm/yyyy"
  380. }
  381. ,
  382. "mm.dd.yyyy": {
  383. mask: "1.2.y",
  384. placeholder: "mm.dd.yyyy",
  385. leapday: "02.29.",
  386. separator: ".",
  387. alias: "mm/dd/yyyy"
  388. }
  389. ,
  390. "mm-dd-yyyy": {
  391. mask: "1-2-y",
  392. placeholder: "mm-dd-yyyy",
  393. leapday: "02-29-",
  394. separator: "-",
  395. alias: "mm/dd/yyyy"
  396. }
  397. ,
  398. "yyyy.mm.dd": {
  399. mask: "y.1.2",
  400. placeholder: "yyyy.mm.dd",
  401. leapday: ".02.29",
  402. separator: ".",
  403. alias: "yyyy/mm/dd"
  404. }
  405. ,
  406. "yyyy-mm-dd": {
  407. mask: "y-1-2",
  408. placeholder: "yyyy-mm-dd",
  409. leapday: "-02-29",
  410. separator: "-",
  411. alias: "yyyy/mm/dd"
  412. }
  413. ,
  414. "datetime": {
  415. mask: "1/2/y h:s",
  416. placeholder: "dd/mm/yyyy hh:mm",
  417. alias: "dd/mm/yyyy",
  418. regex: {
  419. hrspre: new RegExp("[012]"), //hours pre
  420. hrs24: new RegExp("2[0-4]|1[3-9]"),
  421. hrs: new RegExp("[01][0-9]|2[0-4]"), //hours
  422. ampm: new RegExp("^[a|p|A|P][m|M]"),
  423. mspre: new RegExp("[0-5]"), //minutes/seconds pre
  424. ms: new RegExp("[0-5][0-9]")
  425. }
  426. ,
  427. timeseparator: ":",
  428. hourFormat: "24", // or 12
  429. definitions: {
  430. "h": { //hours
  431. validator: function (chrs, maskset, pos, strict, opts) {
  432. if (opts.hourFormat === "24") {
  433. if (parseInt(chrs, 10) === 24) {
  434. maskset.buffer[pos - 1] = "0";
  435. maskset.buffer[pos] = "0";
  436. return {
  437. "refreshFromBuffer": {
  438. start: pos - 1,
  439. end: pos
  440. },
  441. "c": "0"
  442. };
  443. }
  444. }
  445. var isValid = opts.regex.hrs.test(chrs);
  446. if (!strict && !isValid) {
  447. if (chrs.charAt(1) === opts.timeseparator || "-.:".indexOf(chrs.charAt(1)) !== -1) {
  448. isValid = opts.regex.hrs.test("0" + chrs.charAt(0));
  449. if (isValid) {
  450. maskset.buffer[pos - 1] = "0";
  451. maskset.buffer[pos] = chrs.charAt(0);
  452. pos++;
  453. return {
  454. "refreshFromBuffer": {
  455. start: pos - 2,
  456. end: pos
  457. },
  458. "pos": pos,
  459. "c": opts.timeseparator
  460. };
  461. }
  462. }
  463. }
  464. if (isValid && opts.hourFormat !== "24" && opts.regex.hrs24.test(chrs)) {
  465. var tmp = parseInt(chrs, 10);
  466. if (tmp === 24) {
  467. maskset.buffer[pos + 5] = "a";
  468. maskset.buffer[pos + 6] = "m";
  469. } else {
  470. maskset.buffer[pos + 5] = "p";
  471. maskset.buffer[pos + 6] = "m";
  472. }
  473. tmp = tmp - 12;
  474. if (tmp < 10) {
  475. maskset.buffer[pos] = tmp.toString();
  476. maskset.buffer[pos - 1] = "0";
  477. } else {
  478. maskset.buffer[pos] = tmp.toString().charAt(1);
  479. maskset.buffer[pos - 1] = tmp.toString().charAt(0);
  480. }
  481. return {
  482. "refreshFromBuffer": {
  483. start: pos - 1,
  484. end: pos + 6
  485. },
  486. "c": maskset.buffer[pos]
  487. };
  488. }
  489. return isValid;
  490. }
  491. ,
  492. cardinality: 2,
  493. prevalidator: [{
  494. validator: function (chrs, maskset, pos, strict, opts) {
  495. var isValid = opts.regex.hrspre.test(chrs);
  496. if (!strict && !isValid) {
  497. isValid = opts.regex.hrs.test("0" + chrs);
  498. if (isValid) {
  499. maskset.buffer[pos] = "0";
  500. pos++;
  501. return {
  502. "pos": pos
  503. };
  504. }
  505. }
  506. return isValid;
  507. },
  508. cardinality: 1
  509. }]
  510. }
  511. ,
  512. "s": { //seconds || minutes
  513. validator: "[0-5][0-9]",
  514. cardinality: 2,
  515. prevalidator: [{
  516. validator: function (chrs, maskset, pos, strict, opts) {
  517. var isValid = opts.regex.mspre.test(chrs);
  518. if (!strict && !isValid) {
  519. isValid = opts.regex.ms.test("0" + chrs);
  520. if (isValid) {
  521. maskset.buffer[pos] = "0";
  522. pos++;
  523. return {
  524. "pos": pos
  525. };
  526. }
  527. }
  528. return isValid;
  529. },
  530. cardinality: 1
  531. }]
  532. }
  533. ,
  534. "t": { //am/pm
  535. validator: function (chrs, maskset, pos, strict, opts) {
  536. return opts.regex.ampm.test(chrs + "m");
  537. }
  538. ,
  539. casing: "lower",
  540. cardinality: 1
  541. }
  542. }
  543. ,
  544. insertMode: false,
  545. autoUnmask: false
  546. }
  547. ,
  548. "datetime12": {
  549. mask: "1/2/y h:s t\\m",
  550. placeholder: "dd/mm/yyyy hh:mm xm",
  551. alias: "datetime",
  552. hourFormat: "12"
  553. }
  554. ,
  555. "mm/dd/yyyy hh:mm xm": {
  556. mask: "1/2/y h:s t\\m",
  557. placeholder: "mm/dd/yyyy hh:mm xm",
  558. alias: "datetime12",
  559. regex: {
  560. val2pre: function (separator) {
  561. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  562. return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
  563. }
  564. ,
  565. val2: function (separator) {
  566. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  567. return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
  568. }
  569. ,
  570. val1pre: new RegExp("[01]"),
  571. val1: new RegExp("0[1-9]|1[012]")
  572. }
  573. ,
  574. leapday: "02/29/",
  575. onKeyDown: function (e, buffer, caretPos, opts) {
  576. var $input = $(this);
  577. if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
  578. var today = new Date();
  579. $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());
  580. $input.trigger("setvalue");
  581. }
  582. }
  583. }
  584. ,
  585. "hh:mm t": {
  586. mask: "h:s t\\m",
  587. placeholder: "hh:mm xm",
  588. alias: "datetime",
  589. hourFormat: "12"
  590. }
  591. ,
  592. "h:s t": {
  593. mask: "h:s t\\m",
  594. placeholder: "hh:mm xm",
  595. alias: "datetime",
  596. hourFormat: "12"
  597. }
  598. ,
  599. "hh:mm:ss": {
  600. mask: "h:s:s",
  601. placeholder: "hh:mm:ss",
  602. alias: "datetime",
  603. autoUnmask: false
  604. }
  605. ,
  606. "hh:mm": {
  607. mask: "h:s",
  608. placeholder: "hh:mm",
  609. alias: "datetime",
  610. autoUnmask: false
  611. }
  612. ,
  613. "date": {
  614. alias: "dd/mm/yyyy" // "mm/dd/yyyy"
  615. }
  616. ,
  617. "mm/yyyy": {
  618. mask: "1/y",
  619. placeholder: "mm/yyyy",
  620. leapday: "donotuse",
  621. separator: "/",
  622. alias: "mm/dd/yyyy"
  623. }
  624. ,
  625. "shamsi": {
  626. regex: {
  627. val2pre: function (separator) {
  628. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  629. return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "[0-3])");
  630. }
  631. ,
  632. val2: function (separator) {
  633. var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
  634. return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[1-9]|1[012])" + escapedSeparator + "30)|((0[1-6])" + escapedSeparator + "31)");
  635. }
  636. ,
  637. val1pre: new RegExp("[01]"),
  638. val1: new RegExp("0[1-9]|1[012]")
  639. }
  640. ,
  641. yearrange: {
  642. minyear: 1300,
  643. maxyear: 1499
  644. }
  645. ,
  646. mask: "y/1/2",
  647. leapday: "/12/30",
  648. placeholder: "yyyy/mm/dd",
  649. alias: "mm/dd/yyyy",
  650. clearIncomplete: true
  651. }
  652. });
  653. return Inputmask;
  654. }));