@@ -19,13 +19,23 @@ provides: [Form.Validator.Extras]
19
19
20
20
...
21
21
*/
22
+
23
+ ( function ( ) {
24
+
25
+ function getItems ( props , preference , children , cssSelector ) {
26
+ if ( preference && props [ preference ] ) return props [ preference ] ;
27
+ var el = document . id ( props [ children ] ) ;
28
+ if ( ! el ) return [ ] ;
29
+ return el . getElements ( cssSelector )
30
+ }
31
+
22
32
Form . Validator . addAllThese ( [
23
33
24
34
[ 'validate-enforce-oncheck' , {
25
35
test : function ( element , props ) {
26
36
var fv = element . getParent ( 'form' ) . retrieve ( 'validator' ) ;
27
37
if ( ! fv ) return true ;
28
- ( props . toEnforce || document . id ( props . enforceChildrenOf ) . getElements ( ' input, select, textarea') ) . map ( function ( item ) {
38
+ getItems ( props , ' toEnforce' , ' enforceChildrenOf' , ' input, select, textarea') . each ( function ( item ) {
29
39
if ( element . checked ) {
30
40
fv . enforceField ( item ) ;
31
41
} else {
@@ -41,7 +51,7 @@ Form.Validator.addAllThese([
41
51
test : function ( element , props ) {
42
52
var fv = element . getParent ( 'form' ) . retrieve ( 'validator' ) ;
43
53
if ( ! fv ) return true ;
44
- ( props . toIgnore || document . id ( props . ignoreChildrenOf ) . getElements ( ' input, select, textarea') ) . each ( function ( item ) {
54
+ getItems ( props , ' toIgnore' , ' ignoreChildrenOf' , ' input, select, textarea') . each ( function ( item ) {
45
55
if ( element . checked ) {
46
56
fv . ignoreField ( item ) ;
47
57
fv . resetField ( item ) ;
@@ -52,6 +62,23 @@ Form.Validator.addAllThese([
52
62
return true ;
53
63
}
54
64
} ] ,
65
+
66
+ [ 'validate-enforce-onselect-value' , {
67
+ test : function ( element , props ) {
68
+ if ( ! props . value ) return true ;
69
+ var fv = element . getParent ( 'form' ) . retrieve ( 'validator' ) ;
70
+ if ( ! fv ) return true ;
71
+ getItems ( props , 'toEnforce' , 'enforceChildrenOf' , 'input, select, textarea' ) . each ( function ( item ) {
72
+ if ( props . value == element . value ) {
73
+ fv . enforceField ( item ) ;
74
+ } else {
75
+ fv . ignoreField ( item ) ;
76
+ fv . resetField ( item ) ;
77
+ }
78
+ } ) ;
79
+ return true ;
80
+ }
81
+ } ] ,
55
82
56
83
[ 'validate-nospace' , {
57
84
errorMsg : function ( ) {
@@ -66,7 +93,7 @@ Form.Validator.addAllThese([
66
93
test : function ( element , props ) {
67
94
var fv = element . getParent ( 'form' ) . retrieve ( 'validator' ) ;
68
95
if ( ! fv ) return true ;
69
- var eleArr = props . toToggle || document . id ( props . toToggleChildrenOf ) . getElements ( 'input, select, textarea' ) ;
96
+ var eleArr = getItems ( props , ' toToggle' , ' toToggleChildrenOf' , 'input, select, textarea' ) ;
70
97
if ( ! element . checked ) {
71
98
eleArr . each ( function ( item ) {
72
99
fv . ignoreField ( item ) ;
@@ -86,7 +113,7 @@ Form.Validator.addAllThese([
86
113
return Form . Validator . getMsg ( 'reqChkByNode' ) ;
87
114
} ,
88
115
test : function ( element , props ) {
89
- return ( document . id ( props . nodeId ) . getElements ( props . selector || 'input[type=checkbox], input[type=radio]' ) ) . some ( function ( item ) {
116
+ return getItems ( props , false , ' nodeId' , props . selector || 'input[type=checkbox], input[type=radio]' ) . some ( function ( item ) {
90
117
return item . checked ;
91
118
} ) ;
92
119
}
@@ -107,11 +134,14 @@ Form.Validator.addAllThese([
107
134
} ,
108
135
test : function ( element , props ) {
109
136
var grpName = props . groupName || element . get ( 'name' ) ;
110
- var oneCheckedItem = $$ ( document . getElementsByName ( grpName ) ) . some ( function ( item , index ) {
137
+ var grpNameEls = $$ ( '[name=' + grpName + ']' ) ;
138
+ var oneCheckedItem = grpNameEls . some ( function ( item , index ) {
111
139
return item . checked ;
112
140
} ) ;
113
141
var fv = element . getParent ( 'form' ) . retrieve ( 'validator' ) ;
114
- if ( oneCheckedItem && fv ) fv . resetField ( element ) ;
142
+ if ( oneCheckedItem && fv ) {
143
+ grpNameEls . each ( function ( item , index ) { fv . resetField ( item ) ; } ) ;
144
+ }
115
145
return oneCheckedItem ;
116
146
}
117
147
} ] ,
@@ -228,5 +258,6 @@ Form.Validator.addAllThese([
228
258
}
229
259
} ]
230
260
231
-
232
261
] ) ;
262
+
263
+ } ) ;
0 commit comments