Numeric.class.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * @author scott
  4. *
  5. *
  6. */
  7. class Staple_Form_Validate_Numeric extends Staple_Form_Validator
  8. {
  9. const DEFAULT_ERROR = 'Field value must be numeric.';
  10. /**
  11. *
  12. * @param mixed $data
  13. * @return bool
  14. * @see Staple_Form_Validator::check()
  15. */
  16. public function check($data)
  17. {
  18. if(ctype_digit((string)$data) === true)
  19. {
  20. return true;
  21. }
  22. else
  23. {
  24. $this->addError(self::DEFAULT_ERROR);
  25. }
  26. return false;
  27. }
  28. /**
  29. * (non-PHPdoc)
  30. * @see Staple_Form_Validator::clientJQuery()
  31. */
  32. public function clientJQuery($fieldType, Staple_Form_Element $field)
  33. {
  34. switch ($fieldType)
  35. {
  36. case 'Staple_Form_SelectElement':
  37. $fieldid = "#{$field->getId()}";
  38. $valstring = "#{$field->getId()} option:selected";
  39. break;
  40. case 'Staple_Form_RadioGroup':
  41. $fieldid = "input:radio[name={$field->getName()}]";
  42. $valstring = "input:radio[name={$field->getName()}]:checked";
  43. break;
  44. case 'Staple_Form_CheckboxElement':
  45. return '';
  46. break;
  47. default:
  48. $fieldid = "#{$field->getId()}";
  49. $valstring = $fieldid;
  50. }
  51. $script = "\t//Numeric Validator for ".addslashes($field->getLabel())."\n";
  52. $script .= "\tif(!(/^[0-9]+$/.test($('$valstring').val())))\n";
  53. $script .= "\t{\n";
  54. $script .= "\t\terrors.push('".addslashes($field->getLabel()).": \\n{$this->clientJSError()}\\n');\n";
  55. $script .= "\t\t$('$fieldid').addClass('form_error');\n";
  56. $script .= "\t}\n";
  57. $script .= "\telse {\n";
  58. $script .= "\t\t$('$fieldid').removeClass('form_error');\n";
  59. $script .= "\t}\n";
  60. return $script;
  61. }
  62. }
  63. ?>