今儿个工作之余,写个这个验证库,以便于除在用ASP.NET之外的人的各位同仁,也能很快的编写验证当前表单里需要提交的数据格式.
当然,该验证库只对客户端有效!
调用的共用脚本public.js如下:
如上代码中,部分函数采用了优快云的JAVASCRIPT通用库.
下面即为调用验证的formcheck函数,你可以把它放在需要调用的页里,也可以单独放置到某一个JS里.
当然,该验证库只对客户端有效!
调用的共用脚本public.js如下:
1
//
//common
2
3
function
LTrim(str)
4
5
{
6
7
var
whitespace
=
new
String(
"
/t/n/r
"
);
8
9
var
s
=
new
String(str);
10
11
12
13
if
(whitespace.indexOf(s.charAt(
0
))
!=
-
1
)
14
15
{
16
17
var
j
=
0
, i
=
s.length;
18
19
while
(j
<
i
&&
whitespace.indexOf(s.charAt(j))
!=
-
1
)
20
21
{
22
23
j
++
;
24
25
}
26
27
s
=
s.substring(j, i);
28
29
}
30
31
return
s;
32
33
}
34
35
36
37
/*
38
39
==================================================================
40
41
RTrim(string):去除右边的空格
42
43
==================================================================
44
45
*/
46
47
function
RTrim(str)
48
49
{
50
51
var
whitespace
=
new
String(
"
/t/n/r
"
);
52
53
var
s
=
new
String(str);
54
55
56
57
if
(whitespace.indexOf(s.charAt(s.length
-
1
))
!=
-
1
)
58
59
{
60
61
var
i
=
s.length
-
1
;
62
63
while
(i
>=
0
&&
whitespace.indexOf(s.charAt(i))
!=
-
1
)
64
65
{
66
67
i
--
;
68
69
}
70
71
s
=
s.substring(
0
, i
+
1
);
72
73
}
74
75
return
s;
76
77
}
78
79
80
81
/*
82
83
==================================================================
84
85
Trim(string):去除前后空格
86
87
==================================================================
88
89
*/
90
91
function
Trim(str)
92
93
{
94
95
return
RTrim(LTrim(str));
96
97
}
98
99
100
101
102
103
104
105
/*
106
107
================================================================================
108
109
XMLEncode(string):对字符串进行XML编码
110
111
================================================================================
112
113
*/
114
115
function
XMLEncode(str)
116
117
{
118
119
str
=
Trim(str);
120
121
str
=
str.replace(
"
&
"
,
"
&
"
);
122
123
str
=
str.replace(
"
<
"
,
"
<
"
);
124
125
str
=
str.replace(
"
>
"
,
"
>
"
);
126
127
str
=
str.replace(
"
'
"
,
"
'
"
);
128
129
str
=
str.replace(
"
/
""
,
"
&
quot;
"
);
130
131
return str;
132
133
}
134
135
136
137
/*
138
139
================================================================================
140
141
验证类函数
142
143
================================================================================
144
145
*/
146
147
148
149
function IsEmpty(obj,strMsg)
150
151
{
152
obj=document.getElementsByName(obj).item(0);
153
154
if(Trim(obj.value)==
""
)
155
156
{
157
if(null!=strMsg)
158
alert(
"
[
"
+strMsg+
"
]不能为空。
"
);
159
else
160
alert(
"
字段不能为空
"
);
161
162
163
if(obj.disabled==false && obj.readOnly==false)
164
{
165
obj.focus();
166
}
167
return false;
168
}
169
return true;
170
}
171
172
173
174
/*
175
176
IsInt(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)
177
178
功能:判断是否为整数、正整数、负整数、正整数+0、负整数+0
179
180
*/
181
182
function IsInt(objStr,sign,zero)
183
184
{
185
186
var reg;
187
188
var bolzero;
189
190
191
192
if(Trim(objStr)==
""
)
193
194
{
195
196
return false;
197
198
}
199
200
else
201
202
{
203
204
objStr=objStr.toString();
205
206
}
207
208
209
210
if((sign==null)||(Trim(sign)==
""
))
211
212
{
213
214
sign=
"
+-
"
;
215
216
}
217
218
219
220
if((zero==null)||(Trim(zero)==
""
))
221
222
{
223
224
bolzero=false;
225
226
}
227
228
else
229
230
{
231
232
zero=zero.toString();
233
234
if(zero==
"
0
"
)
235
236
{
237
238
bolzero=true;
239
240
}
241
242
else
243
244
{
245
246
alert(
"
检查是否包含0参数,只可为(空、
0
)
"
);
247
248
}
249
250
}
251
252
253
254
switch(sign)
255
256
{
257
258
case
"
+-
"
:
259
260
//整数
261
262
reg=/(^-?|^/+?)/d+$/;
263
264
break;
265
266
case
"
+
"
:
267
268
if(!bolzero)
269
270
{
271
272
//正整数
273
274
reg=/^/+?[0-9]*[1-9][0-9]*$/;
275
276
}
277
278
else
279
280
{
281
282
//正整数+0
283
284
//reg=/^/+?/d+$/;
285
286
reg=/^/+?[0-9]*[0-9][0-9]*$/;
287
288
}
289
290
break;
291
292
case
"
-
"
:
293
294
if(!bolzero)
295
296
{
297
298
//负整数
299
300
reg=/^-[0-9]*[1-9][0-9]*$/;
301
302
}
303
304
else
305
306
{
307
308
//负整数+0
309
310
//reg=/^-/d+$/;
311
312
reg=/^-[0-9]*[0-9][0-9]*$/;
313
314
}
315
316
break;
317
318
default:
319
320
alert(
"
检查符号参数,只可为(空、
+
、
-
)
"
);
321
322
return false;
323
324
break;
325
326
}
327
328
329
330
var r=objStr.match(reg);
331
332
if(r==null)
333
334
{
335
336
return false;
337
338
}
339
340
else
341
342
{
343
344
return true;
345
346
}
347
348
}
349
350
351
352
/*
353
354
IsFloat(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)
355
356
功能:判断是否为浮点数、正浮点数、负浮点数、正浮点数+0、负浮点数+0
357
358
*/
359
360
function IsFloat(objStr,sign,zero)
361
362
{
363
364
var reg;
365
366
var bolzero;
367
368
369
370
if(Trim(objStr)==
""
)
371
372
{
373
374
return false;
375
376
}
377
378
else
379
380
{
381
382
objStr=objStr.toString();
383
384
}
385
386
387
388
if((sign==null)||(Trim(sign)==
""
))
389
390
{
391
392
sign=
"
+-
"
;
393
394
}
395
396
397
398
if((zero==null)||(Trim(zero)==
""
))
399
400
{
401
402
bolzero=false;
403
404
}
405
406
else
407
408
{
409
410
zero=zero.toString();
411
412
if(zero==
"
0
"
)
413
414
{
415
416
bolzero=true;
417
418
}
419
420
else
421
422
{
423
424
alert(
"
检查是否包含0参数,只可为(空、
0
)
"
);
425
426
}
427
428
}
429
430
431
432
switch(sign)
433
434
{
435
436
case
"
+-
"
:
437
438
//浮点数
439
440
reg=/^((-?|/+?)/d+)(/./d+)?$/;
441
442
break;
443
444
case
"
+
"
:
445
446
if(!bolzero)
447
448
{
449
450
//正浮点数
451
452
reg=/^/+?(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
453
454
}
455
456
else
457
458
{
459
460
//正浮点数+0
461
462
reg=/^/+?/d+(/./d+)?$/;
463
464
}
465
466
break;
467
468
case
"
-
"
:
469
470
if(!bolzero)
471
472
{
473
474
//负浮点数
475
476
reg=/^-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
477
478
}
479
480
else
481
482
{
483
484
//负浮点数+0
485
486
reg=/^((-/d+(/./d+)?)|(0+(/.0+)?))$/;
487
488
}
489
490
break;
491
492
default:
493
494
alert(
"
检查符号参数,只可为(空、
+
、
-
)
"
);
495
496
return false;
497
498
break;
499
500
}
501
502
503
504
var r=objStr.match(reg);
505
506
if(r==null)
507
508
{
509
510
return false;
511
512
}
513
514
else
515
516
{
517
518
return true;
519
520
}
521
522
}
523
524
/* 是否EMAIL 格式,daniel*/
525
function IsEmail(obj,strMsg)
526
{
527
var obj=document.getElementsByName(obj).item(0);
528
529
objStr=obj.value;
530
531
var reg=/^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/;
532
533
var r=objStr.match(reg);
534
535
if(r==null)
536
{
537
if(obj.disabled==false && obj.readOnly==false)
538
{
539
obj.focus();
540
}
541
if(null!=strMsg)
542
alert(
"
[
"
+strMsg+
"
]格式不对,必须为EMAIL格式。
"
);
543
else
544
alert(
"
字段格式不对
"
);
545
return false;
546
}
547
else
548
{
549
return true;
550
}
551
}
552
553
/* 是否超过最大长度 daniel*/
554
555
function IsOutMax(obj,len,strMsg)
556
{
557
var obj=document.getElementsByName(obj).item(0);
558
559
objStr=obj.value;
560
561
var r=objStr.length;
562
563
if(r>len)
564
{
565
if(obj.disabled==false && obj.readOnly==false)
566
{
567
obj.focus();
568
}
569
if(null!=strMsg)
570
alert(
"
[
"
+strMsg+
"
]太长了,请精简文字。
"
);
571
else
572
alert(
"
字段长度过长
"
);
573
return false;
574
}
575
else
576
{
577
return true;
578
}
579
}
580
581
/* 是否小于最小长度 daniel*/
582
583
function IsOutMin(obj,len,strMsg)
584
{
585
var obj=document.getElementsByName(obj).item(0);
586
587
objStr=obj.value;
588
589
var r=objStr.length;
590
591
if(r<len)
592
{
593
if(obj.disabled==false && obj.readOnly==false)
594
{
595
obj.focus();
596
}
597
if(null!=strMsg)
598
alert(
"
[
"
+strMsg+
"
]文字太少了,请详细填写。
"
);
599
else
600
alert(
"
字段长度过短
"
);
601
return false;
602
}
603
else
604
{
605
return true;
606
}
607
}
608
609
/* 是否足够长度 daniel*/
610
611
function IsFix(obj,len,strMsg)
612
{
613
var obj=document.getElementsByName(obj).item(0);
614
615
objStr=obj.value;
616
617
var r=objStr.length;
618
619
if(r!=len)
620
{
621
if(obj.disabled==false && obj.readOnly==false)
622
{
623
obj.focus();
624
}
625
if(null!=strMsg)
626
alert(
"
[
"
+strMsg+
"
]文字长度必须为
"
+ len +
"
个。
"
);
627
else
628
alert(
"
字段长度必须为
"
+len+
"
个.
"
);
629
return false;
630
}
631
else
632
{
633
return true;
634
}
635
}
636
637
/* 是否数字 格式,daniel*/
638
function IsNumeric(obj,strMsg)
639
{
640
var obj=document.getElementsByName(obj).item(0);
641
642
objStr=obj.value;
643
644
var reg=/^/d*$/;
645
646
var r=objStr.match(reg);
647
648
if(r==null)
649
{
650
if(obj.disabled==false && obj.readOnly==false)
651
{
652
obj.focus();
653
}
654
if(null!=strMsg)
655
alert(
"
[
"
+strMsg+
"
]必须为数字格式。
"
);
656
else
657
alert(
"
字段格式必须为数字
"
);
658
return false;
659
}
660
else
661
{
662
return true;
663
}
664
}
665
666
667
/* 是否IP地址 格式,daniel*/
668
function IsIP(obj,strMsg)
669
{
670
var obj=document.getElementsByName(obj).item(0);
671
672
objStr=obj.value;
673
674
var reg=/^/d+/.+/d+/.+/d+/.+/d*$/;
675
676
var r=objStr.match(reg);
677
678
if(r==null)
679
{
680
if(obj.disabled==false && obj.readOnly==false)
681
{
682
obj.focus();
683
}
684
if(null!=strMsg)
685
alert(
"
[
"
+strMsg+
"
]必须为为IP地址形式。
"
);
686
else
687
alert(
"
字段格式必须为IP地址形式
"
);
688
return false;
689
}
690
else
691
{
692
return true;
693
}
694
}
695
696
697
698
///////

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

528

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

689

690

691

692

693

694

695

696

697

698

如上代码中,部分函数采用了优快云的JAVASCRIPT通用库.
下面即为调用验证的formcheck函数,你可以把它放在需要调用的页里,也可以单独放置到某一个JS里.
1
2
function
formcheck()
3
{
4
var
bReturn
=
false
;
5
//
需要判断的字段名称
6
/*
alert(document.getElementById("fldscope"));
7
alert(typeof(document.getElementById("fldscope")));
8
alert(typeof(document.form1.fldscope));
9
10
alert(document.getElementById("fldscope").value);
11
alert(document.getElementById("fldscope").tagName);@!!!!1
12
13
return false;
*/
14
//
只针对type=text ,hidden 有效,对于下拉菜单等还有问题
15
var
arrKey
=
new
Array(
"
fldname
"
,
"
fldlinkman
"
,
16
"
fldaddr
"
,
"
fldzipcode
"
,
"
fldphone
"
,
"
fldemail
"
,
17
"
fldqq
"
,
"
fldmsn
"
,
"
fldarea
"
,
"
fldcity
"
,
18
"
fldip
"
19
);
20
var
arrValue
=
new
Object();
21
//
arrValue 的格式要求,0:格式(是否可为空,MAIL,数字.最大字符数 最小字符数.),1:提示文字
22
//
类型名称 必须为5个字符,+其他如长度数
23
//
xnull 不允许为空,email必须mail格式,minln2最小2字符 ,maxln2最多2字符 numbe数字
24
//
fixln5 固定长度5 ipadd IP地址格式
25
//
所有字段的类型,长短等配置
26
arrValue[
"
fldname
"
]
=
new
Array(
"
xnull
"
,
"
厂家名称
"
);
27
arrValue[
"
fldlinkman
"
]
=
new
Array(
"
xnull,minln6
"
,
"
联系人
"
);
28
29
arrValue[
"
fldaddr
"
]
=
new
Array(
"
xnull,maxln125
"
,
"
详细地址
"
);
30
arrValue[
"
fldzipcode
"
]
=
new
Array(
"
xnull,fixln6,numbe
"
,
"
邮编
"
);
31
arrValue[
"
fldphone
"
]
=
new
Array(
"
xnull,minln5
"
,
"
电话号码
"
);
32
33
arrValue[
"
fldemail
"
]
=
new
Array(
"
xnull,email
"
,
"
Email
"
);
34
35
arrValue[
"
fldqq
"
]
=
new
Array(
"
xnull,numbe
"
,
"
QQ
"
);
36
arrValue[
"
fldmsn
"
]
=
new
Array(
"
xnull,email
"
,
"
MSN
"
);
37
38
arrValue[
"
fldarea
"
]
=
new
Array(
"
xnull
"
,
"
地区
"
);
39
arrValue[
"
fldcity
"
]
=
new
Array(
"
xnull
"
,
"
所属推荐经销商
"
);
40
//
arrValue["fldscope"]=new Array("xnull","规模");
41
arrValue[
"
fldip
"
]
=
new
Array(
"
xnull,ipadd
"
,
"
IP
"
);
42
43
44
for
(
var
i
=
0
; i
<
arrKey.length; i
++
)
45
{
46
if
(
null
!=
arrValue[arrKey[i]])
47
{
48
var
strType
=
arrValue[arrKey[i]][
0
];
49
if
(strType.indexOf(
"
,
"
)
>
0
)
50
{
51
var
arrType
=
strType.split(
"
,
"
);
52
for
(
var
j
=
0
;j
<
arrType.length;j
++
)
53
{
54
switch
(arrType[j].substr(
0
,
5
))
55
{
56
case
"
xnull
"
:
57
bReturn
=
IsEmpty(arrKey[i],arrValue[arrKey[i]][
1
]);
58
break
;
59
case
"
email
"
:
60
bReturn
=
IsEmail(arrKey[i],arrValue[arrKey[i]][
1
]);
61
break
;
62
case
"
minln
"
:
63
bReturn
=
IsOutMin(arrKey[i],arrType[j].substr(
5
,arrType[j].length
-
5
),arrValue[arrKey[i]][
1
]);
64
break
;
65
case
"
numbe
"
:
66
bReturn
=
IsNumeric(arrKey[i],arrValue[arrKey[i]][
1
]);
67
break
;
68
case
"
fixln
"
:
69
bReturn
=
IsFix(arrKey[i],arrType[j].substr(
5
,arrType[j].length
-
5
),arrValue[arrKey[i]][
1
]);
70
break
;
71
case
"
ipadd
"
:
72
bReturn
=
IsIP(arrKey[i],arrValue[arrKey[i]][
1
]);
73
break
;
74
default
:
75
76
break
;
77
}
78
if
(
false
==
bReturn)
return
false
;
79
80
}
81
}
else
82
{
83
switch
(strType)
84
{
85
case
"
xnull
"
:
86
bReturn
=
IsEmpty(arrKey[i],arrValue[arrKey[i]][
1
]);
87
break
;
88
case
"
email
"
:
89
bReturn
=
IsEmail(arrKey[i],arrValue[arrKey[i]][
1
]);
90
break
;
91
case
"
minln
"
:
92
bReturn
=
IsOutMin(arrKey[i],arrType[j].substr(
5
,arrType[j].length
-
5
),arrValue[arrKey[i]][
1
]);
93
break
;
94
case
"
numbe
"
:
95
bReturn
=
IsNumeric(arrKey[i],arrValue[arrKey[i]][
1
]);
96
break
;
97
case
"
fixln
"
:
98
bReturn
=
IsFix(arrKey[i],arrType[j].substr(
5
,arrType[j].length
-
5
),arrValue[arrKey[i]][
1
]);
99
break
;
100
case
"
ipadd
"
:
101
bReturn
=
IsIP(arrKey[i],arrValue[arrKey[i]][
1
]);
102
break
;
103
104
default
:
105
106
break
;
107
}
108
}
109
if
(
false
==
bReturn)
return
false
;
110
}
111
112
}
113
114
return
true
;
115
}
116

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

该调用的函数必须放在 form表单头里.如
<form name="form1" method="post" action="submit.php" onSubmit="return formcheck();">
如此这般,你只需要对 arrKey,arrValue进行配置,即可以完成对各表单字段的验证.
注意 :
该1.0版本的验证库
已知BUG:
1.对表单中的text,hidden类型的inputbox有效,对于其他如下拉框暂时不起作用.
2.IP格式判断不是太准确,需要定位每个.之间的数字必须在3位内.
哪位高手,有好的意见或建议,请与我交流.zxc1017@msn.com