bootstrap_validator_rails 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +32 -0
- data/lib/bootstrap_validator_rails/engine.rb +4 -0
- data/lib/bootstrap_validator_rails/version.rb +3 -0
- data/lib/bootstrap_validator_rails.rb +42 -0
- data/lib/tasks/bootstrap_validator_rails_tasks.rake +4 -0
- data/test/bootstrap_validator_rails_test.rb +13 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/post.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +82 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20140723124112_create_posts.rb +7 -0
- data/test/dummy/db/schema.rb +20 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/ENV=test.log +0 -0
- data/test/dummy/log/development.log +22 -0
- data/test/dummy/log/test.log +781 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/test_helper.rb +15 -0
- data/vendor/assets/javascripts/bootstrapValidator.js +1803 -0
- data/vendor/assets/javascripts/language/de_DE.js +326 -0
- data/vendor/assets/javascripts/language/en_US.js +327 -0
- data/vendor/assets/javascripts/language/es_CL.js +326 -0
- data/vendor/assets/javascripts/language/hu_HU.js +326 -0
- data/vendor/assets/javascripts/language/vi_VN.js +322 -0
- data/vendor/assets/javascripts/language/zh_CN.js +326 -0
- data/vendor/assets/javascripts/language/zh_TW.js +326 -0
- data/vendor/assets/javascripts/validator/base64.js +25 -0
- data/vendor/assets/javascripts/validator/between.js +66 -0
- data/vendor/assets/javascripts/validator/callback.js +40 -0
- data/vendor/assets/javascripts/validator/choice.js +68 -0
- data/vendor/assets/javascripts/validator/creditCard.js +103 -0
- data/vendor/assets/javascripts/validator/cusip.js +55 -0
- data/vendor/assets/javascripts/validator/cvv.js +116 -0
- data/vendor/assets/javascripts/validator/date.js +118 -0
- data/vendor/assets/javascripts/validator/different.js +41 -0
- data/vendor/assets/javascripts/validator/digits.js +24 -0
- data/vendor/assets/javascripts/validator/ean.js +40 -0
- data/vendor/assets/javascripts/validator/emailAddress.js +31 -0
- data/vendor/assets/javascripts/validator/file.js +69 -0
- data/vendor/assets/javascripts/validator/greaterThan.js +61 -0
- data/vendor/assets/javascripts/validator/grid.js +37 -0
- data/vendor/assets/javascripts/validator/hex.js +25 -0
- data/vendor/assets/javascripts/validator/hexColor.js +28 -0
- data/vendor/assets/javascripts/validator/iban.js +246 -0
- data/vendor/assets/javascripts/validator/id.js +815 -0
- data/vendor/assets/javascripts/validator/identical.js +40 -0
- data/vendor/assets/javascripts/validator/imei.js +44 -0
- data/vendor/assets/javascripts/validator/integer.js +28 -0
- data/vendor/assets/javascripts/validator/ip.js +48 -0
- data/vendor/assets/javascripts/validator/isbn.js +86 -0
- data/vendor/assets/javascripts/validator/isin.js +59 -0
- data/vendor/assets/javascripts/validator/ismn.js +59 -0
- data/vendor/assets/javascripts/validator/issn.js +46 -0
- data/vendor/assets/javascripts/validator/lessThan.js +61 -0
- data/vendor/assets/javascripts/validator/mac.js +25 -0
- data/vendor/assets/javascripts/validator/notEmpty.js +32 -0
- data/vendor/assets/javascripts/validator/numeric.js +39 -0
- data/vendor/assets/javascripts/validator/phone.js +84 -0
- data/vendor/assets/javascripts/validator/regexp.js +42 -0
- data/vendor/assets/javascripts/validator/remote.js +70 -0
- data/vendor/assets/javascripts/validator/rtn.js +38 -0
- data/vendor/assets/javascripts/validator/sedol.js +40 -0
- data/vendor/assets/javascripts/validator/siren.js +28 -0
- data/vendor/assets/javascripts/validator/siret.js +38 -0
- data/vendor/assets/javascripts/validator/step.js +64 -0
- data/vendor/assets/javascripts/validator/stringCase.js +36 -0
- data/vendor/assets/javascripts/validator/stringLength.js +81 -0
- data/vendor/assets/javascripts/validator/uri.js +101 -0
- data/vendor/assets/javascripts/validator/uuid.js +46 -0
- data/vendor/assets/javascripts/validator/vat.js +1220 -0
- data/vendor/assets/javascripts/validator/vin.js +49 -0
- data/vendor/assets/javascripts/validator/zipCode.js +162 -0
- data/vendor/assets/stylesheets/bootstrapValidator.css +21 -0
- metadata +233 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
/**
|
|
3
|
+
* Simplified Chinese language package
|
|
4
|
+
* Translated by @tureki
|
|
5
|
+
*/
|
|
6
|
+
$.fn.bootstrapValidator.i18n = $.extend(true, $.fn.bootstrapValidator.i18n, {
|
|
7
|
+
base64: {
|
|
8
|
+
'default': '請輸入有效的Base64編碼'
|
|
9
|
+
},
|
|
10
|
+
between: {
|
|
11
|
+
'default': '請輸入不小於 %s 且不大於 %s 的值',
|
|
12
|
+
notInclusive: '請輸入不小於等於 %s 且不大於等於 %s 的值'
|
|
13
|
+
},
|
|
14
|
+
callback: {
|
|
15
|
+
'default': '請輸入有效的值'
|
|
16
|
+
},
|
|
17
|
+
choice: {
|
|
18
|
+
'default': '請輸入有效的值',
|
|
19
|
+
less: '最少選擇 %s 個選項',
|
|
20
|
+
more: '最多選擇 %s 個選項',
|
|
21
|
+
between: '請選擇 %s 至 %s 個選項'
|
|
22
|
+
},
|
|
23
|
+
creditCard: {
|
|
24
|
+
'default': '請輸入有效的信用卡號碼'
|
|
25
|
+
},
|
|
26
|
+
cusip: {
|
|
27
|
+
'default': '請輸入有效的CUSIP'
|
|
28
|
+
},
|
|
29
|
+
cvv: {
|
|
30
|
+
'default': '請輸入有效的CVV'
|
|
31
|
+
},
|
|
32
|
+
date: {
|
|
33
|
+
'default': '請輸入有效的日期'
|
|
34
|
+
},
|
|
35
|
+
different: {
|
|
36
|
+
'default': '請輸入不一樣的值'
|
|
37
|
+
},
|
|
38
|
+
digits: {
|
|
39
|
+
'default': '只能輸入數字'
|
|
40
|
+
},
|
|
41
|
+
ean: {
|
|
42
|
+
'default': '請輸入有效的EAN'
|
|
43
|
+
},
|
|
44
|
+
emailAddress: {
|
|
45
|
+
'default': '請輸入有效的EMAIL'
|
|
46
|
+
},
|
|
47
|
+
file: {
|
|
48
|
+
'default': '請選擇有效的檔案'
|
|
49
|
+
},
|
|
50
|
+
greaterThan: {
|
|
51
|
+
'default': '請輸入大於或等於 %s 的值',
|
|
52
|
+
notInclusive: '請輸入大於 %s 的值'
|
|
53
|
+
},
|
|
54
|
+
grid: {
|
|
55
|
+
'default': '請輸入有效的GRId'
|
|
56
|
+
},
|
|
57
|
+
hex: {
|
|
58
|
+
'default': '請輸入有效的16位元碼'
|
|
59
|
+
},
|
|
60
|
+
hexColor: {
|
|
61
|
+
'default': '請輸入有效的16位色碼'
|
|
62
|
+
},
|
|
63
|
+
iban: {
|
|
64
|
+
'default': '請輸入有效的IBAN ',
|
|
65
|
+
countryNotSupported: '不支援該國家代碼 %s',
|
|
66
|
+
country: '請輸入有效的 %s IBAN編號 ',
|
|
67
|
+
countries: {
|
|
68
|
+
AD: '安道爾',
|
|
69
|
+
AE: '阿聯酋',
|
|
70
|
+
AL: '阿爾巴尼亞',
|
|
71
|
+
AO: '安哥拉',
|
|
72
|
+
AT: '奧地利',
|
|
73
|
+
AZ: '阿塞拜疆',
|
|
74
|
+
BA: '波斯尼亞和黑塞哥維那',
|
|
75
|
+
BE: '比利時',
|
|
76
|
+
BF: '布基納法索',
|
|
77
|
+
BG: '保加利亞',
|
|
78
|
+
BH: '巴林',
|
|
79
|
+
BI: '布隆迪',
|
|
80
|
+
BJ: '貝寧',
|
|
81
|
+
BR: '巴西',
|
|
82
|
+
CH: '瑞士',
|
|
83
|
+
CI: '象牙海岸',
|
|
84
|
+
CM: '喀麥隆',
|
|
85
|
+
CR: '哥斯達黎加',
|
|
86
|
+
CV: '佛得角',
|
|
87
|
+
CY: '塞浦路斯',
|
|
88
|
+
CZ: '捷克共和國',
|
|
89
|
+
DE: '德國',
|
|
90
|
+
DK: '丹麥',
|
|
91
|
+
DO: '多明尼加共和國',
|
|
92
|
+
DZ: '阿爾及利亞',
|
|
93
|
+
EE: '愛沙尼亞',
|
|
94
|
+
ES: '西班牙',
|
|
95
|
+
FI: '芬蘭',
|
|
96
|
+
FO: '法羅群島',
|
|
97
|
+
FR: '法國',
|
|
98
|
+
GB: '英國',
|
|
99
|
+
GE: '格魯吉亞',
|
|
100
|
+
GI: '直布羅陀',
|
|
101
|
+
GL: '格陵蘭島',
|
|
102
|
+
GR: '希臘',
|
|
103
|
+
GT: '危地馬拉',
|
|
104
|
+
HR: '克羅地亞',
|
|
105
|
+
HU: '匈牙利',
|
|
106
|
+
IE: '愛爾蘭',
|
|
107
|
+
IL: '以色列',
|
|
108
|
+
IR: '伊朗',
|
|
109
|
+
IS: '冰島',
|
|
110
|
+
IT: '意大利',
|
|
111
|
+
JO: '喬丹',
|
|
112
|
+
KW: '科威特',
|
|
113
|
+
KZ: '哈薩克斯坦',
|
|
114
|
+
LB: '黎巴嫩',
|
|
115
|
+
LI: '列支敦士登',
|
|
116
|
+
LT: '立陶宛',
|
|
117
|
+
LU: '盧森堡',
|
|
118
|
+
LV: '拉脫維亞',
|
|
119
|
+
MC: '摩納哥',
|
|
120
|
+
MD: '摩爾多瓦',
|
|
121
|
+
ME: '黑山共和國',
|
|
122
|
+
MG: '馬達加斯加',
|
|
123
|
+
MK: '馬其頓',
|
|
124
|
+
ML: '馬里',
|
|
125
|
+
MR: '毛里塔尼亞',
|
|
126
|
+
MT: '馬耳他',
|
|
127
|
+
MU: '毛里求斯',
|
|
128
|
+
MZ: '莫桑比克',
|
|
129
|
+
NL: '荷蘭',
|
|
130
|
+
NO: '挪威',
|
|
131
|
+
PK: '巴基斯坦',
|
|
132
|
+
PL: '波蘭',
|
|
133
|
+
PS: '巴勒斯坦',
|
|
134
|
+
PT: '葡萄牙',
|
|
135
|
+
QA: '卡塔爾',
|
|
136
|
+
RO: '羅馬尼亞',
|
|
137
|
+
RS: '塞爾維亞',
|
|
138
|
+
SA: '沙特阿拉伯',
|
|
139
|
+
SE: '瑞典',
|
|
140
|
+
SI: '斯洛文尼亞',
|
|
141
|
+
SK: '斯洛伐克',
|
|
142
|
+
SM: '聖馬力諾',
|
|
143
|
+
SN: '塞內加爾',
|
|
144
|
+
TN: '突尼斯',
|
|
145
|
+
TR: '土耳其',
|
|
146
|
+
VG: '英屬維爾京群島'
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
id: {
|
|
150
|
+
'default': '請輸入有效的身份證字號碼',
|
|
151
|
+
countryNotSupported: '不支援該國家代碼 %s',
|
|
152
|
+
country: '請輸入有效的 %s 身份證字號碼',
|
|
153
|
+
countries: {
|
|
154
|
+
BA: '波斯尼亞和黑塞哥維那',
|
|
155
|
+
BG: '保加利亞',
|
|
156
|
+
BR: '巴西',
|
|
157
|
+
CH: '瑞士',
|
|
158
|
+
CL: '智利',
|
|
159
|
+
CZ: '捷克',
|
|
160
|
+
DK: '丹麥',
|
|
161
|
+
EE: '愛沙尼亞',
|
|
162
|
+
ES: '西班牙語',
|
|
163
|
+
FI: '芬蘭',
|
|
164
|
+
HR: '克羅地亞',
|
|
165
|
+
IE: '愛爾蘭',
|
|
166
|
+
IS: '冰島',
|
|
167
|
+
LT: '立陶宛',
|
|
168
|
+
LV: '拉脫維亞語',
|
|
169
|
+
ME: '黑山共和國',
|
|
170
|
+
MK: '馬其頓',
|
|
171
|
+
NL: '荷蘭',
|
|
172
|
+
RO: '羅馬尼亞',
|
|
173
|
+
RS: '塞爾維亞',
|
|
174
|
+
SE: '瑞典',
|
|
175
|
+
SI: '斯洛文尼亞',
|
|
176
|
+
SK: '斯洛伐克',
|
|
177
|
+
SM: '聖馬力諾',
|
|
178
|
+
ZA: '南非'
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
identical: {
|
|
182
|
+
'default': '請輸入一樣的值'
|
|
183
|
+
},
|
|
184
|
+
imei: {
|
|
185
|
+
'default': '請輸入有效的IMEI'
|
|
186
|
+
},
|
|
187
|
+
integer: {
|
|
188
|
+
'default': '請輸入有效的整數'
|
|
189
|
+
},
|
|
190
|
+
ip: {
|
|
191
|
+
'default': '請輸入有效的IP位址',
|
|
192
|
+
ipv4: '請輸入有效的IPv4位址',
|
|
193
|
+
ipv6: '請輸入有效的IPv6位址'
|
|
194
|
+
},
|
|
195
|
+
isbn: {
|
|
196
|
+
'default': '請輸入有效的ISBN'
|
|
197
|
+
},
|
|
198
|
+
isin: {
|
|
199
|
+
'default': '請輸入有效的ISIN'
|
|
200
|
+
},
|
|
201
|
+
ismn: {
|
|
202
|
+
'default': '請輸入有效的ISMN'
|
|
203
|
+
},
|
|
204
|
+
issn: {
|
|
205
|
+
'default': '請輸入有效的ISSN'
|
|
206
|
+
},
|
|
207
|
+
lessThan: {
|
|
208
|
+
'default': '請輸入小於或等於 %s 的值',
|
|
209
|
+
notInclusive: '請輸入小於 %s 的值'
|
|
210
|
+
},
|
|
211
|
+
mac: {
|
|
212
|
+
'default': '請輸入有效的MAC位址'
|
|
213
|
+
},
|
|
214
|
+
notEmpty: {
|
|
215
|
+
'default': '欄位不能為空'
|
|
216
|
+
},
|
|
217
|
+
numeric: {
|
|
218
|
+
'default': '請輸入有效的浮點數'
|
|
219
|
+
},
|
|
220
|
+
phone: {
|
|
221
|
+
'default': '請輸入有效的電話號碼',
|
|
222
|
+
countryNotSupported: '不支援該國家代碼 %s',
|
|
223
|
+
country: '請輸入有效的 %s 電話號碼',
|
|
224
|
+
countries: {
|
|
225
|
+
GB: '英國',
|
|
226
|
+
US: '美國'
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
regexp: {
|
|
230
|
+
'default': '請輸入有效的值'
|
|
231
|
+
},
|
|
232
|
+
remote: {
|
|
233
|
+
'default': '請輸入有效的值'
|
|
234
|
+
},
|
|
235
|
+
rtn: {
|
|
236
|
+
'default': '請輸入有效的RTN'
|
|
237
|
+
},
|
|
238
|
+
sedol: {
|
|
239
|
+
'default': '請輸入有效的SEDOL'
|
|
240
|
+
},
|
|
241
|
+
siren: {
|
|
242
|
+
'default': '請輸入有效的SIREN'
|
|
243
|
+
},
|
|
244
|
+
siret: {
|
|
245
|
+
'default': '請輸入有效的SIRET'
|
|
246
|
+
},
|
|
247
|
+
step: {
|
|
248
|
+
'default': '請輸入 %s 個有效步驟'
|
|
249
|
+
},
|
|
250
|
+
stringCase: {
|
|
251
|
+
'default': '只能輸入小寫的值',
|
|
252
|
+
upper: '只能輸入大寫的值'
|
|
253
|
+
},
|
|
254
|
+
stringLength: {
|
|
255
|
+
'default': '請輸入符合長度限制的值',
|
|
256
|
+
less: '請輸入小於 %s 個字',
|
|
257
|
+
more: '請輸入大於 %s 個字',
|
|
258
|
+
between: '請輸入介於 %s 至 %s 個字'
|
|
259
|
+
},
|
|
260
|
+
uri: {
|
|
261
|
+
'default': '請輸入一個有效的鏈接'
|
|
262
|
+
},
|
|
263
|
+
uuid: {
|
|
264
|
+
'default': '請輸入有效的UUID',
|
|
265
|
+
version: '請輸入符合版本 %s 的UUID'
|
|
266
|
+
},
|
|
267
|
+
vat: {
|
|
268
|
+
'default': '請輸入有效的VAT',
|
|
269
|
+
countryNotSupported: '不支援該國家代碼 %s',
|
|
270
|
+
country: '請輸入有效的 %s VAT',
|
|
271
|
+
countries: {
|
|
272
|
+
AT: '奧地利',
|
|
273
|
+
BE: '比利時',
|
|
274
|
+
BG: '保加利亞',
|
|
275
|
+
CH: '瑞士',
|
|
276
|
+
CY: '塞浦路斯',
|
|
277
|
+
CZ: '捷克',
|
|
278
|
+
DE: '德語',
|
|
279
|
+
DK: '丹麥',
|
|
280
|
+
EE: '愛沙尼亞',
|
|
281
|
+
ES: '西班牙',
|
|
282
|
+
FI: '芬蘭',
|
|
283
|
+
FR: '法語',
|
|
284
|
+
GB: '英國',
|
|
285
|
+
GR: '希臘',
|
|
286
|
+
EL: '希臘',
|
|
287
|
+
HU: '匈牙利',
|
|
288
|
+
HR: '克羅地亞',
|
|
289
|
+
IE: '愛爾蘭',
|
|
290
|
+
IT: '意大利',
|
|
291
|
+
LT: '立陶宛',
|
|
292
|
+
LU: '盧森堡',
|
|
293
|
+
LV: '拉脫維亞語',
|
|
294
|
+
MT: '馬耳他',
|
|
295
|
+
NL: '荷蘭',
|
|
296
|
+
NO: '挪威',
|
|
297
|
+
PL: '波蘭',
|
|
298
|
+
PT: '葡萄牙',
|
|
299
|
+
RO: '羅馬尼亞',
|
|
300
|
+
RU: '俄羅斯',
|
|
301
|
+
RS: '塞爾維亞',
|
|
302
|
+
SE: '瑞典',
|
|
303
|
+
SI: '斯洛文尼亞',
|
|
304
|
+
SK: '斯洛伐克'
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
vin: {
|
|
308
|
+
'default': '請輸入有效的VIN'
|
|
309
|
+
},
|
|
310
|
+
zipCode: {
|
|
311
|
+
'default': '請輸入有效的郵政編碼',
|
|
312
|
+
countryNotSupported: '不支援該國家代碼 %s',
|
|
313
|
+
country: '請輸入有效的 %s',
|
|
314
|
+
countries: {
|
|
315
|
+
'CA': '加拿大 郵政編碼',
|
|
316
|
+
'DK': '丹麥 郵政編碼',
|
|
317
|
+
'GB': '英國 郵政編碼',
|
|
318
|
+
'IT': '意大利 郵政編碼',
|
|
319
|
+
'NL': '荷蘭 郵政編碼',
|
|
320
|
+
'SE': '瑞士 郵政編碼',
|
|
321
|
+
'SG': '新加坡 郵政編碼',
|
|
322
|
+
'US': '美國 郵政編碼'
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.base64 = $.extend($.fn.bootstrapValidator.i18n.base64 || {}, {
|
|
3
|
+
'default': 'Please enter a valid base 64 encoded'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.base64 = {
|
|
7
|
+
/**
|
|
8
|
+
* Return true if the input value is a base 64 encoded string.
|
|
9
|
+
*
|
|
10
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
11
|
+
* @param {jQuery} $field Field element
|
|
12
|
+
* @param {Object} options Can consist of the following keys:
|
|
13
|
+
* - message: The invalid message
|
|
14
|
+
* @returns {Boolean}
|
|
15
|
+
*/
|
|
16
|
+
validate: function(validator, $field, options) {
|
|
17
|
+
var value = $field.val();
|
|
18
|
+
if (value === '') {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(value);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.between = $.extend($.fn.bootstrapValidator.i18n.between || {}, {
|
|
3
|
+
'default': 'Please enter a value between %s and %s',
|
|
4
|
+
notInclusive: 'Please enter a value between %s and %s strictly'
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
$.fn.bootstrapValidator.validators.between = {
|
|
8
|
+
html5Attributes: {
|
|
9
|
+
message: 'message',
|
|
10
|
+
min: 'min',
|
|
11
|
+
max: 'max',
|
|
12
|
+
inclusive: 'inclusive'
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
enableByHtml5: function($field) {
|
|
16
|
+
if ('range' === $field.attr('type')) {
|
|
17
|
+
return {
|
|
18
|
+
min: $field.attr('min'),
|
|
19
|
+
max: $field.attr('max')
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return false;
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Return true if the input value is between (strictly or not) two given numbers
|
|
28
|
+
*
|
|
29
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
30
|
+
* @param {jQuery} $field Field element
|
|
31
|
+
* @param {Object} options Can consist of the following keys:
|
|
32
|
+
* - min
|
|
33
|
+
* - max
|
|
34
|
+
*
|
|
35
|
+
* The min, max keys define the number which the field value compares to. min, max can be
|
|
36
|
+
* - A number
|
|
37
|
+
* - Name of field which its value defines the number
|
|
38
|
+
* - Name of callback function that returns the number
|
|
39
|
+
* - A callback function that returns the number
|
|
40
|
+
*
|
|
41
|
+
* - inclusive [optional]: Can be true or false. Default is true
|
|
42
|
+
* - message: The invalid message
|
|
43
|
+
* @returns {Boolean|Object}
|
|
44
|
+
*/
|
|
45
|
+
validate: function(validator, $field, options) {
|
|
46
|
+
var value = $field.val();
|
|
47
|
+
if (value === '') {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var min = $.isNumeric(options.min) ? options.min : validator.getDynamicOption($field, options.min),
|
|
52
|
+
max = $.isNumeric(options.max) ? options.max : validator.getDynamicOption($field, options.max);
|
|
53
|
+
|
|
54
|
+
value = parseFloat(value);
|
|
55
|
+
return (options.inclusive === true || options.inclusive === undefined)
|
|
56
|
+
? {
|
|
57
|
+
valid: value >= min && value <= max,
|
|
58
|
+
message: $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.between['default'], [min, max])
|
|
59
|
+
}
|
|
60
|
+
: {
|
|
61
|
+
valid: value > min && value < max,
|
|
62
|
+
message: $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.between.notInclusive, [min, max])
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.callback = $.extend($.fn.bootstrapValidator.i18n.callback || {}, {
|
|
3
|
+
'default': 'Please enter a valid value'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.callback = {
|
|
7
|
+
html5Attributes: {
|
|
8
|
+
message: 'message',
|
|
9
|
+
callback: 'callback'
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Return result from the callback method
|
|
14
|
+
*
|
|
15
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
16
|
+
* @param {jQuery} $field Field element
|
|
17
|
+
* @param {Object} options Can consist of the following keys:
|
|
18
|
+
* - callback: The callback method that passes 2 parameters:
|
|
19
|
+
* callback: function(fieldValue, validator, $field) {
|
|
20
|
+
* // fieldValue is the value of field
|
|
21
|
+
* // validator is instance of BootstrapValidator
|
|
22
|
+
* // $field is the field element
|
|
23
|
+
* }
|
|
24
|
+
* - message: The invalid message
|
|
25
|
+
* @returns {Boolean|Deferred}
|
|
26
|
+
*/
|
|
27
|
+
validate: function(validator, $field, options) {
|
|
28
|
+
var value = $field.val();
|
|
29
|
+
|
|
30
|
+
if (options.callback) {
|
|
31
|
+
var dfd = new $.Deferred(),
|
|
32
|
+
response = $.fn.bootstrapValidator.helpers.call(options.callback, [value, validator, $field]);
|
|
33
|
+
dfd.resolve($field, 'callback', 'boolean' === typeof response ? response : response.valid, 'object' === typeof response && response.message ? response.message : null);
|
|
34
|
+
return dfd;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.choice = $.extend($.fn.bootstrapValidator.i18n.choice || {}, {
|
|
3
|
+
'default': 'Please enter a valid value',
|
|
4
|
+
less: 'Please choose %s options at minimum',
|
|
5
|
+
more: 'Please choose %s options at maximum',
|
|
6
|
+
between: 'Please choose %s - %s options'
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
$.fn.bootstrapValidator.validators.choice = {
|
|
10
|
+
html5Attributes: {
|
|
11
|
+
message: 'message',
|
|
12
|
+
min: 'min',
|
|
13
|
+
max: 'max'
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Check if the number of checked boxes are less or more than a given number
|
|
18
|
+
*
|
|
19
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
20
|
+
* @param {jQuery} $field Field element
|
|
21
|
+
* @param {Object} options Consists of following keys:
|
|
22
|
+
* - min
|
|
23
|
+
* - max
|
|
24
|
+
*
|
|
25
|
+
* At least one of two keys is required
|
|
26
|
+
* The min, max keys define the number which the field value compares to. min, max can be
|
|
27
|
+
* - A number
|
|
28
|
+
* - Name of field which its value defines the number
|
|
29
|
+
* - Name of callback function that returns the number
|
|
30
|
+
* - A callback function that returns the number
|
|
31
|
+
*
|
|
32
|
+
* - message: The invalid message
|
|
33
|
+
* @returns {Object}
|
|
34
|
+
*/
|
|
35
|
+
validate: function(validator, $field, options) {
|
|
36
|
+
var numChoices = $field.is('select')
|
|
37
|
+
? validator.getFieldElements($field.attr('data-bv-field')).find('option').filter(':selected').length
|
|
38
|
+
: validator.getFieldElements($field.attr('data-bv-field')).filter(':checked').length,
|
|
39
|
+
min = options.min ? ($.isNumeric(options.min) ? options.min : validator.getDynamicOption($field, options.min)) : null,
|
|
40
|
+
max = options.max ? ($.isNumeric(options.max) ? options.max : validator.getDynamicOption($field, options.max)) : null,
|
|
41
|
+
isValid = true,
|
|
42
|
+
message = options.message || $.fn.bootstrapValidator.i18n.choice['default'];
|
|
43
|
+
|
|
44
|
+
if ((min && numChoices < parseInt(min, 10)) || (max && numChoices > parseInt(max, 10))) {
|
|
45
|
+
isValid = false;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
switch (true) {
|
|
49
|
+
case (!!min && !!max):
|
|
50
|
+
message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.choice.between, [parseInt(min, 10), parseInt(max, 10)]);
|
|
51
|
+
break;
|
|
52
|
+
|
|
53
|
+
case (!!min):
|
|
54
|
+
message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.choice.less, parseInt(min, 10));
|
|
55
|
+
break;
|
|
56
|
+
|
|
57
|
+
case (!!max):
|
|
58
|
+
message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.choice.more, parseInt(max, 10));
|
|
59
|
+
break;
|
|
60
|
+
|
|
61
|
+
default:
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return { valid: isValid, message: message };
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.creditCard = $.extend($.fn.bootstrapValidator.i18n.creditCard || {}, {
|
|
3
|
+
'default': 'Please enter a valid credit card number'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.creditCard = {
|
|
7
|
+
/**
|
|
8
|
+
* Return true if the input value is valid credit card number
|
|
9
|
+
* Based on https://gist.github.com/DiegoSalazar/4075533
|
|
10
|
+
*
|
|
11
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
12
|
+
* @param {jQuery} $field Field element
|
|
13
|
+
* @param {Object} [options] Can consist of the following key:
|
|
14
|
+
* - message: The invalid message
|
|
15
|
+
* @returns {Boolean}
|
|
16
|
+
*/
|
|
17
|
+
validate: function(validator, $field, options) {
|
|
18
|
+
var value = $field.val();
|
|
19
|
+
if (value === '') {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Accept only digits, dashes or spaces
|
|
24
|
+
if (/[^0-9-\s]+/.test(value)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
value = value.replace(/\D/g, '');
|
|
28
|
+
|
|
29
|
+
if (!$.fn.bootstrapValidator.helpers.luhn(value)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Validate the card number based on prefix (IIN ranges) and length
|
|
34
|
+
var cards = {
|
|
35
|
+
AMERICAN_EXPRESS: {
|
|
36
|
+
length: [15],
|
|
37
|
+
prefix: ['34', '37']
|
|
38
|
+
},
|
|
39
|
+
DINERS_CLUB: {
|
|
40
|
+
length: [14],
|
|
41
|
+
prefix: ['300', '301', '302', '303', '304', '305', '36']
|
|
42
|
+
},
|
|
43
|
+
DINERS_CLUB_US: {
|
|
44
|
+
length: [16],
|
|
45
|
+
prefix: ['54', '55']
|
|
46
|
+
},
|
|
47
|
+
DISCOVER: {
|
|
48
|
+
length: [16],
|
|
49
|
+
prefix: ['6011', '622126', '622127', '622128', '622129', '62213',
|
|
50
|
+
'62214', '62215', '62216', '62217', '62218', '62219',
|
|
51
|
+
'6222', '6223', '6224', '6225', '6226', '6227', '6228',
|
|
52
|
+
'62290', '62291', '622920', '622921', '622922', '622923',
|
|
53
|
+
'622924', '622925', '644', '645', '646', '647', '648',
|
|
54
|
+
'649', '65']
|
|
55
|
+
},
|
|
56
|
+
JCB: {
|
|
57
|
+
length: [16],
|
|
58
|
+
prefix: ['3528', '3529', '353', '354', '355', '356', '357', '358']
|
|
59
|
+
},
|
|
60
|
+
LASER: {
|
|
61
|
+
length: [16, 17, 18, 19],
|
|
62
|
+
prefix: ['6304', '6706', '6771', '6709']
|
|
63
|
+
},
|
|
64
|
+
MAESTRO: {
|
|
65
|
+
length: [12, 13, 14, 15, 16, 17, 18, 19],
|
|
66
|
+
prefix: ['5018', '5020', '5038', '6304', '6759', '6761', '6762', '6763', '6764', '6765', '6766']
|
|
67
|
+
},
|
|
68
|
+
MASTERCARD: {
|
|
69
|
+
length: [16],
|
|
70
|
+
prefix: ['51', '52', '53', '54', '55']
|
|
71
|
+
},
|
|
72
|
+
SOLO: {
|
|
73
|
+
length: [16, 18, 19],
|
|
74
|
+
prefix: ['6334', '6767']
|
|
75
|
+
},
|
|
76
|
+
UNIONPAY: {
|
|
77
|
+
length: [16, 17, 18, 19],
|
|
78
|
+
prefix: ['622126', '622127', '622128', '622129', '62213', '62214',
|
|
79
|
+
'62215', '62216', '62217', '62218', '62219', '6222', '6223',
|
|
80
|
+
'6224', '6225', '6226', '6227', '6228', '62290', '62291',
|
|
81
|
+
'622920', '622921', '622922', '622923', '622924', '622925']
|
|
82
|
+
},
|
|
83
|
+
VISA: {
|
|
84
|
+
length: [16],
|
|
85
|
+
prefix: ['4']
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
var type, i;
|
|
90
|
+
for (type in cards) {
|
|
91
|
+
for (i in cards[type].prefix) {
|
|
92
|
+
if (value.substr(0, cards[type].prefix[i].length) === cards[type].prefix[i] // Check the prefix
|
|
93
|
+
&& $.inArray(value.length, cards[type].length) !== -1) // and length
|
|
94
|
+
{
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.cusip = $.extend($.fn.bootstrapValidator.i18n.cusip || {}, {
|
|
3
|
+
'default': 'Please enter a valid CUSIP number'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.cusip = {
|
|
7
|
+
/**
|
|
8
|
+
* Validate a CUSIP
|
|
9
|
+
* Examples:
|
|
10
|
+
* - Valid: 037833100, 931142103, 14149YAR8, 126650BG6
|
|
11
|
+
* - Invalid: 31430F200, 022615AC2
|
|
12
|
+
*
|
|
13
|
+
* @see http://en.wikipedia.org/wiki/CUSIP
|
|
14
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
15
|
+
* @param {jQuery} $field Field element
|
|
16
|
+
* @param {Object} [options] Can consist of the following keys:
|
|
17
|
+
* - message: The invalid message
|
|
18
|
+
* @returns {Boolean}
|
|
19
|
+
*/
|
|
20
|
+
validate: function(validator, $field, options) {
|
|
21
|
+
var value = $field.val();
|
|
22
|
+
if (value === '') {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
value = value.toUpperCase();
|
|
27
|
+
if (!/^[0-9A-Z]{9}$/.test(value)) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var converted = $.map(value.split(''), function(item) {
|
|
32
|
+
var code = item.charCodeAt(0);
|
|
33
|
+
return (code >= 'A'.charCodeAt(0) && code <= 'Z'.charCodeAt(0))
|
|
34
|
+
// Replace A, B, C, ..., Z with 10, 11, ..., 35
|
|
35
|
+
? (code - 'A'.charCodeAt(0) + 10)
|
|
36
|
+
: item;
|
|
37
|
+
}),
|
|
38
|
+
length = converted.length,
|
|
39
|
+
sum = 0;
|
|
40
|
+
for (var i = 0; i < length - 1; i++) {
|
|
41
|
+
var num = parseInt(converted[i], 10);
|
|
42
|
+
if (i % 2 !== 0) {
|
|
43
|
+
num *= 2;
|
|
44
|
+
}
|
|
45
|
+
if (num > 9) {
|
|
46
|
+
num -= 9;
|
|
47
|
+
}
|
|
48
|
+
sum += num;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
sum = (10 - (sum % 10)) % 10;
|
|
52
|
+
return sum === converted[length - 1];
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}(window.jQuery));
|