PageSourceSearch

https://freeipost.post.gov.tw/pstacce/assets/js/directives/eInputLimit.js

js post.gov.tw collected 2026-09-24 08:39:58 UTC 1,609 bytes, 53 lines download raw bytes

1/**
2 * EA=英數, EAD=英數 + "_" + "-", N=純數字, T=中文與全型字, ET=中英文 + 符號
3 */
4eSoafApp.directive('eInputLimit', function() {
5	return {
6		restrict: 'A',
7		require: 'ngModel',
8//		scope: {
9//			pattern: '@pattern',
10//			type: '@eInputLimit'
11//		},
12		link: function(scope, elm, attrs, ngModelCtrl) {
13			if (!ngModelCtrl) {
14				return;
15			}
16			ngModelCtrl.$parsers.push(function(val) {
17				var reg;
18				attrs.pattern = attrs.pattern || '';
19				
20				if("F" == attrs.eInputLimit) {
21					reg = new RegExp("^[0-9]+([0-9]*|[.]?[0-9]*)$", "g");
22					
23					if(val != undefined && !reg.test(val)) {
24						val += "";
25						val = val.substr(0, val.length-1);
26						ngModelCtrl.$setViewValue(val);
27						ngModelCtrl.$render();
28					}
29					
30					return val;
31				} else {
32					if ("EA" == attrs.eInputLimit)
33						reg = new RegExp("[^a-zA-Z0-9" + attrs.pattern + "]", "g");
34					else if ("EAD" == attrs.eInputLimit)
35						reg = new RegExp("[^a-zA-Z0-9-_" + attrs.pattern + "]", "g");
36					else if ("N" == attrs.eInputLimit)
37						reg = new RegExp("[^0-9" + attrs.pattern + "]", "g");
38					else if ("T" == attrs.eInputLimit)
39						reg = new RegExp("[\x21-\x7e" + attrs.pattern + "]", "g");
40					else if ("ET" == attrs.eInputLimit)
41						reg = new RegExp("[0-9" + attrs.pattern + "]", "g");
42					var clean = val == undefined ? undefined : val.replace(reg, '');
43					clean = clean == '' ? undefined : clean;
44					if (val != clean) {
45						ngModelCtrl.$setViewValue(clean);
46						ngModelCtrl.$render();
47					}
48					return clean;
49				}
50			});
51		}
52	};
53});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.