|
338 | 338 | * Validates single rule. |
339 | 339 | */ |
340 | 340 | Nette.validateRule = function(elem, op, arg, value) { |
| 341 | + if (elem.type === 'number' && elem.validity.badInput) { |
| 342 | + return op === 'filled'; |
| 343 | + } |
| 344 | + |
341 | 345 | value = value === undefined ? {value: Nette.getEffectiveValue(elem, true)} : value; |
342 | 346 |
|
343 | 347 | if (op.charAt(0) === ':') { |
|
362 | 366 |
|
363 | 367 | Nette.validators = { |
364 | 368 | filled: function(elem, arg, val) { |
365 | | - if (elem.type === 'number' && elem.validity.badInput) { |
366 | | - return true; |
367 | | - } |
368 | 369 | return val !== '' && val !== false && val !== null |
369 | 370 | && (!Array.isArray(val) || !!val.length) |
370 | 371 | && (!window.FileList || !(val instanceof window.FileList) || val.length); |
|
410 | 411 | }, |
411 | 412 |
|
412 | 413 | minLength: function(elem, arg, val) { |
413 | | - if (elem.type === 'number') { |
414 | | - if (elem.validity.tooShort) { |
415 | | - return false; |
416 | | - } else if (elem.validity.badInput) { |
417 | | - return null; |
418 | | - } |
419 | | - } |
420 | 414 | return val.length >= arg; |
421 | 415 | }, |
422 | 416 |
|
423 | 417 | maxLength: function(elem, arg, val) { |
424 | | - if (elem.type === 'number') { |
425 | | - if (elem.validity.tooLong) { |
426 | | - return false; |
427 | | - } else if (elem.validity.badInput) { |
428 | | - return null; |
429 | | - } |
430 | | - } |
431 | 418 | return val.length <= arg; |
432 | 419 | }, |
433 | 420 |
|
434 | 421 | length: function(elem, arg, val) { |
435 | | - if (elem.type === 'number') { |
436 | | - if (elem.validity.tooShort || elem.validity.tooLong) { |
437 | | - return false; |
438 | | - } else if (elem.validity.badInput) { |
439 | | - return null; |
440 | | - } |
441 | | - } |
442 | 422 | arg = Array.isArray(arg) ? arg : [arg, arg]; |
443 | 423 | return (arg[0] === null || val.length >= arg[0]) && (arg[1] === null || val.length <= arg[1]); |
444 | 424 | }, |
|
496 | 476 | }, |
497 | 477 |
|
498 | 478 | numeric: function(elem, arg, val) { |
499 | | - if (elem.type === 'number' && elem.validity.badInput) { |
500 | | - return false; |
501 | | - } |
502 | 479 | return (/^[0-9]+$/).test(val); |
503 | 480 | }, |
504 | 481 |
|
505 | 482 | integer: function(elem, arg, val) { |
506 | | - if (elem.type === 'number' && elem.validity.badInput) { |
507 | | - return false; |
508 | | - } |
509 | 483 | return (/^-?[0-9]+$/).test(val); |
510 | 484 | }, |
511 | 485 |
|
512 | 486 | 'float': function(elem, arg, val, value) { |
513 | | - if (elem.type === 'number' && elem.validity.badInput) { |
514 | | - return false; |
515 | | - } |
516 | 487 | val = val.replace(/ +/g, '').replace(/,/g, '.'); |
517 | 488 | if ((/^-?[0-9]*\.?[0-9]+$/).test(val)) { |
518 | 489 | value.value = val; |
|
522 | 493 | }, |
523 | 494 |
|
524 | 495 | min: function(elem, arg, val) { |
525 | | - if (elem.type === 'number') { |
526 | | - if (elem.validity.rangeUnderflow) { |
527 | | - return false; |
528 | | - } else if (elem.validity.badInput) { |
529 | | - return null; |
530 | | - } |
531 | | - } |
532 | 496 | return arg === null || parseFloat(val) >= arg; |
533 | 497 | }, |
534 | 498 |
|
535 | 499 | max: function(elem, arg, val) { |
536 | | - if (elem.type === 'number') { |
537 | | - if (elem.validity.rangeOverflow) { |
538 | | - return false; |
539 | | - } else if (elem.validity.badInput) { |
540 | | - return null; |
541 | | - } |
542 | | - } |
543 | 500 | return arg === null || parseFloat(val) <= arg; |
544 | 501 | }, |
545 | 502 |
|
546 | 503 | range: function(elem, arg, val) { |
547 | | - if (elem.type === 'number') { |
548 | | - if (elem.validity.rangeUnderflow || elem.validity.rangeOverflow) { |
549 | | - return false; |
550 | | - } else if (elem.validity.badInput) { |
551 | | - return null; |
552 | | - } |
553 | | - } |
554 | 504 | return Array.isArray(arg) ? |
555 | 505 | ((arg[0] === null || parseFloat(val) >= arg[0]) && (arg[1] === null || parseFloat(val) <= arg[1])) : null; |
556 | 506 | }, |
|
0 commit comments