Как удалить атрибут шага числового поля из компонента веб-формы в Drupal 7

Я разработал одну веб-форму Drupal 7, имеющую поля (имя пользователя, номер телефона, идентификатор электронной почты).
Пожалуйста, смотрите источник ниже:

введите описание изображения здесь

Поле номера телефона, имеющее шаг атрибут, который дает ошибку в доступности. Я хочу удалить это для соответствия доступности. Что я должен сделать для этого?

0

Решение

Вы можете сделать это с помощью формы alter:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'your_form_id') {
$fieldname = 'my_field_name_to_edit';
if(isset($form[$fieldname]['#attributes']['step'])) unset($form[$fieldname]['#attributes']['step']);
}
}

Найти документацию здесь: https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_form_alter/7.x

А также

https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x#attributes

0

Другие решения

Для полей Webfor Number атрибут шага принудительно добавляется в theme_webform_number(), так что единственный способ — переопределить эту функцию в вашей теме и удалить этот фрагмент кода:

/**
* Theme function to render a number component.
*/
function YOURTHEME_webform_number($variables) {
$element = $variables['element'];

// This IF statement is mostly in place to allow our tests to set type="text"// because SimpleTest does not support type="number".
if (!isset($element['#attributes']['type'])) {
// HTML5 number fields are no long used pending better browser support.
// See issues #2290029, #2202905.
// $element['#attributes']['type'] = 'number';
$element['#attributes']['type'] = 'text';
}

// Step property *must* be a full number with 0 prefix if a decimal.
if (!empty($element['#step']) && !is_int($element['#step'] * 1)) {
$decimals = strlen($element['#step']) - strrpos($element['#step'], '.') - 1;
$element['#step'] = sprintf('%1.' . $decimals . 'F', $element['#step']);
}

// If the number is not an integer and step is undefined/empty, set the "any"// value to allow any decimal.
if (empty($element['#integer']) && empty($element['#step'])) {
$element['#step'] = 'any';
}
elseif ($element['#integer'] && empty($element['#step'])) {
$element['#step'] = 1;
}
unset($element['#step']);

// Convert properties to attributes on the element if set.
// removed step attribute.
foreach (array('id', 'name', 'value', 'size', 'min', 'max') as $property) {
if (isset($element['#' . $property]) && $element['#' . $property] !== '') {
$element['#attributes'][$property] = $element['#' . $property];
}
}
_form_set_class($element, array('form-text', 'form-number'));

return '<input' . drupal_attributes($element['#attributes']) . ' />';
}

Надеюсь, это поможет вам …

0

По вопросам рекламы [email protected]