为什么日期选择器无法识别错误的格式?

时间:2018-10-12 10:01:27

标签: sapui5

我有一个使用以下代码段创建的日期选择器:

return new sap.m.DatePicker(sId, {
    dateValue: `{${sPath}}`,
    valueFormat: "dd-MM-yyyy",
    displayFormat: "dd-MM-yyyy"
});

在该字段中输入错误的奇怪内容:
enter image description here
无法识别无效格式。

但是当我尝试用this example书写时,它确实可以识别。
enter image description here

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

const oDatePicker = new DatePicker(sId).bindValue({
  path: sPath,
  type: new DateType({ // "sap/ui/model/type/Date"
    pattern: "dd-MM-yyyy",
  })
});
const messageManager = sap.ui.getCore().getMessageManager();
messageManager.registerObject(oDatePicker, true);
return oDataPicker;
  1. 如果使用数据绑定,则需要绑定value属性而不是dateValue

      

    API reference: sap.m.DatePicker

         
        
    • 如果要使用value将DatePicker绑定到模型,请使用sap.ui.model.type.Date属性。
    •   
    • 如果日期已作为JavaScript Date对象提供,或者您要使用JavaScript Date对象,请使用dateValue属性。 (...)尽管可以绑定它,但建议这样做。 需要绑定时,请改用value属性。
    •   
  2. 最后,将控件注册到MessageManager或enable handleValidation。如果无法解析输入或违反给定的约束,UI5将负责显示错误消息。

答案 1 :(得分:0)

https://sapui5.hana.ondemand.com/#/sample/sap.m.sample.DatePicker/code/Group.controller.js

handleChange: function (oEvent) {
        var oText = this.byId("T1");
        var oDP = oEvent.oSource;
        var sValue = oEvent.getParameter("value");
        var bValid = oEvent.getParameter("valid");
        this._iEvent++;
        oText.setText("Change - Event " + this._iEvent + ": DatePicker " + oDP.getId() + ":" + sValue);

        if (bValid) {
            oDP.setValueState(sap.ui.core.ValueState.None);
        } else {
            oDP.setValueState(sap.ui.core.ValueState.Error);
        }
    }

这是示例中使用的更改处理程序,您必须自己执行错误处理