You are here

function double_field_validate_number in Double Field 7.2

Form element validation handler for numeric elements.

1 call to double_field_validate_number()
double_field_checkbox_to_storage in ./double_field.module
Transforms submitted checkbox values into field storage format.
2 string references to 'double_field_validate_number'
double_field_field_widget_form in ./double_field.module
Implements hook_field_widget_form().
double_field_field_widget_settings_form in ./double_field.module
Implements hook_field_widget_settings_form().

File

./double_field.module, line 286
Defines "Double field" field type.

Code

function double_field_validate_number($element, &$form_state) {
  if ($element['#value']) {
    $settings = $element['#subfield_settings'];
    if ($settings['type'] == 'int' && !preg_match('/^-?\\d+$/', $element['#value'])) {
      form_error($element, t('%name must be an integer.', array(
        '%name' => $element['#title'],
      )));
    }
    elseif ($settings['type'] == 'int' && !double_field_validate_integer_range($element['#value'], $settings['size'])) {
      form_error($element, t('%name out of range.', array(
        '%name' => $element['#title'],
      )));
    }
    elseif (($settings['type'] == 'float' || $settings['type'] == 'decimal') && !is_numeric($element['#value'])) {
      form_error($element, t('%name must be a valid float or decimal.', array(
        '%name' => $element['#title'],
      )));
    }
    elseif ($settings['type'] == 'decimal' && !double_field_validate_decimal_range($element['#value'], $settings['precision'], $settings['scale'])) {
      form_error($element, t('%name out of range.', array(
        '%name' => $element['#title'],
      )));
    }
  }
}