sap.m.Input只允许正整数值

问题描述 投票:0回答:2

我需要拒绝sap.m.Input控制除整数值之外的任何输入。因此在输入中可能只输入0-9,没有任何符号符号(+ - )或任何小数分隔符。我找不到好的解决方案。以XML格式声明的视图,如果可能的话,更好的方法是使用其他参数更改此XML。

可能的解决方案:

  • 第一个 - 编写自定义格式化程序。
  • 第二个 - 尝试找到一些类型的标准解决方案。我发现了内部数据类型和设置,但似乎它们运行不正常。
sapui5
2个回答
3
投票

在这种情况下,自定义格式化程序不会帮助您,因为它仅用于单向(模型 - >视图)。

但数据类型是你的朋友。我建议sap.ui.model.type.Integer的最小约束为0。

<Input value="{path: '/value', type: 'sap.ui.model.type.Integer', constraints:{minimum:0}}" />

但是,这确实有两个先决条件:

  1. 您需要启用复杂的数据绑定。这可以在index.html中的bootstrap标记中使用data-sap-ui-compatVersion属性完成。至少需要1.26版本。您可以使用值边缘指定最新版本:
<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
        id="sap-ui-bootstrap" 
        data-sap-ui-theme="sap_bluecrystal" 
        data-sap-ui-libs="sap.m" 
        data-sap-ui-compatVersion="edge">

或者你可以使用data-sap-ui-bindingSyntax="complex"

  1. 如果用户输入无效数据,则数据类型会抛出ValidationException。将默默忽略该错误,但不会更新模型。要获得用户的一些反馈,您可以在MessageManager注册控件或整个视图:
sap.ui.getCore().getMessageManager().registerObject(this.getView(), true);

您还可以在Component中启用handleValidation或实例化组件。

Example on JSBin


2
投票

正则表达式是你的朋友。

这是一个漂亮的simple jsbin我重新使用的人只验证文本并修改正则表达式只接受数字。

您可以将验证连接到更改事件,以便在输入文本时触发并将状态设置为错误。

让我们知道这是如何工作的。

干杯,

奈杰尔

© www.soinside.com 2019 - 2024. All rights reserved.