function number_field_widget_form

Implements hook_field_widget_form().

File

modules/field/modules/number/number.module, line 342

Code

function number_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
    $value = isset($items[$delta]['value']) ? $items[$delta]['value'] : '';
    // Substitute the decimal separator.
    if ($field['type'] == 'number_decimal' || $field['type'] == 'number_float') {
        $value = strtr($value, '.', $field['settings']['decimal_separator']);
    }
    $element += array(
        '#type' => 'textfield',
        '#default_value' => $value,
        // Allow a slightly larger size that the field length to allow for some
        // configurations where all characters won't fit in input field.
'#size' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] + 4 : 12,
        // Allow two extra characters for signed values and decimal separator.
'#maxlength' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] + 2 : 10,
        // Extract the number type from the field type name for easier validation.
'#number_type' => str_replace('number_', '', $field['type']),
    );
    // Add prefix and suffix.
    if (!empty($instance['settings']['prefix'])) {
        $prefixes = explode('|', $instance['settings']['prefix']);
        $element['#field_prefix'] = field_filter_xss(array_pop($prefixes));
    }
    if (!empty($instance['settings']['suffix'])) {
        $suffixes = explode('|', $instance['settings']['suffix']);
        $element['#field_suffix'] = field_filter_xss(array_pop($suffixes));
    }
    $element['#element_validate'][] = 'number_field_widget_validate';
    return array(
        'value' => $element,
    );
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.