Skip to content

Commit d06dacb

Browse files
committed
netteForms.js: validator 'equal' compares values as PHP strings
1 parent 0c1ee8a commit d06dacb

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/assets/netteForms.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,13 +294,21 @@ Nette.validators = {
294294
if (arg === undefined) {
295295
return null;
296296
}
297+
298+
function toString(val) {
299+
if (typeof val === 'number' || typeof val === 'string') {
300+
return '' + val;
301+
} else {
302+
return val === true ? '1' : '';
303+
}
304+
}
305+
297306
val = Nette.isArray(val) ? val : [val];
298307
arg = Nette.isArray(arg) ? arg : [arg];
299308
loop:
300309
for (var i1 = 0, len1 = val.length; i1 < len1; i1++) {
301310
for (var i2 = 0, len2 = arg.length; i2 < len2; i2++) {
302-
/* jshint eqeqeq: false */
303-
if (val[i1] == arg[i2]) {
311+
if (toString(val[i1]) === toString(arg[i2])) {
304312
continue loop;
305313
}
306314
}

tests/netteForms/spec/Nette.validatorsSpec.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ describe('Nette.validators', function() {
55
expect(Nette.validators.equal(null, '', 'a')).toBe(false);
66
expect(Nette.validators.equal(null, 'a', 'a')).toBe(true);
77
expect(Nette.validators.equal(null, 0, '0')).toBe(true);
8+
expect(Nette.validators.equal(null, 0, '')).toBe(false);
9+
expect(Nette.validators.equal(null, null, '')).toBe(true);
10+
expect(Nette.validators.equal(null, false, '')).toBe(true);
11+
expect(Nette.validators.equal(null, false, 0)).toBe(false);
12+
expect(Nette.validators.equal(null, true, '1')).toBe(true);
813
expect(Nette.validators.equal(null, 'a', ['a'])).toBe(true);
914
expect(Nette.validators.equal(null, 'a', ['b'])).toBe(false);
1015
expect(Nette.validators.equal(null, 'a', [])).toBe(true);

0 commit comments

Comments
 (0)