Вопрос:

Маска ввода для sap.m.Date (Time) Picker

sapui5

781 просмотра

3 ответа

70 Репутация автора

С помощью sap.m.DateTimePickerэтого пользователь может выбрать значение из раскрывающегося списка или ввести его вручную. Я интересно , если есть способ , чтобы добавить маску к ручному полю ввода , который соответствует valueFormatиз DateTimePicker.

Я знаю, что есть sap.m.MaskInputтакже, так что, возможно, есть способ объединить эти два элемента.

Автор: Gian Paolo Buffo Источник Размещён: 09.01.2018 11:26

Ответы (3)


0 плюса

456 Репутация автора

Я думаю, что единственный способ объединить два sap.m.DateTimePicker и sap.m.MaskInput - это создать свой собственный элемент управления. Документация: https://sapui5.hana.ondemand.com/#/topic/91f1703b6f4d1014b6dd926db0e91070 .

Другой способ - просто использовать заполнитель поля ввода DateTimePicker. Это не обеспечивает ту же функциональность, что и MaskInput, но помогает пользователю, который valueFormat ожидается во входе при вводе его вручную.

Автор: Francesco Iannazzo Размещён: 09.01.2018 11:51

-1 плюса

1 Репутация автора

Если у вас есть привязка в поле ввода, вы можете установить тип в привязке, например,. sap.ui.model.type.Date. Таким образом, вы получаете автоматическое форматирование при запуске проверки поля. Существуют и другие типы, и вы можете наследовать от sap.ui.model.SimpleType для написания своего кода.

Автор: sco Размещён: 09.01.2018 12:47

2 плюса

7479 Репутация автора

Решение

Существует новый закрытый модуль с именем sap.m.MaskEnabler, который sap.m.InputBase (т.е. DateTimePicker) должен использовать.

(MaskEnabler) следует применять к прототипу sap.m.InputBase.

Функция маски в настоящее время включена только в sap.m.TimePicker (v1.54). Однако в соответствии с этим сообщением о фиксации та же функция будет поступать и в средство выбора даты (времени):

Это изменение готовит к рефакторингу DatePicker и TimePicker, поэтому общий код обоих сборщиков может быть перемещен в новый общий элемент управления, который они могут расширить.

Поэтому, если это не срочно и в зависимости от вашего проекта, я не буду создавать новый пользовательский элемент управления, а затем выбрасывать его после появления функции маски.

Я обновлю свой ответ, когда он будет доступен.


До тех пор (и даже после этого) вы все еще можете указывать пользователю вводить данные в правильном формате через тип привязки OData sap.ui.model.odata.type.DateTime:

<DateTimePicker
  value="{
    path: 'myODataModel>myDateTime',
    type: 'sap.ui.model.odata.type.DateTime',
    constraints: {
      isDateOnly: true,
      displayFormat: 'Date'
    }
  }"
  minDate="{...}"
  maxDate="{...}"
/>
  • В отличие отformatter , typeпозволяет нам поддерживать двустороннюю привязку данных.
  • Введенное значение автоматически перехватывается при обновлении данных модели, когда ...
    1. Не удалось проанализировать из-за неправильного формата ( пожарыparseError )
    2. Это может быть проанализировано, но constraintsбыли нарушены (пожары validationError)
  • Если вы дополнительно включите обработку сообщений пользовательского интерфейса , то инфраструктура позаботится о создании соответствующего сообщения для пользователя:

    Дата подтверждения ввода OpenUI5

Пример: https://stackoverflow.com/a/48482544

Автор: Boghyon Hoffmann Размещён: 22.01.2018 02:56
Вопросы из категории :
32x32