sap.m.MaskInput
[API] 的典型用例。使用 MaskInput 消除了(在前端)验证的需要,因为它甚至不允许输入无效字符,这也提高了用户体验。
当然,你也可以继续使用
sap.m.Input
。在这种情况下,您可以使用类型 sap.ui.model.(odata.)type.String
和等待正则表达式的约束 search
。错误的输入不会传递到绑定模型。
这是展示这两个示例的演示:
globalThis.onUI5Init = () => sap.ui.require([
"sap/ui/core/mvc/XMLView",
"sap/ui/model/json/JSONModel",
"sap/ui/core/Messaging",
], async (XMLView, JSONModel, Messaging) => {
"use strict";
const control = await XMLView.create({
definition: `<mvc:View xmlns:mvc="sap.ui.core.mvc"
xmlns:form="sap.ui.layout.form"
xmlns="sap.m"
height="100%"
displayBlock="true"
>
<App>
<Page
class="sapUiNoContentPadding"
title="Allowing Specific Format Only"
>
<MessageStrip
class="sapUiTinyMarginTop sapUiTinyMarginBeginEnd"
text="Allowed sequence: <em>XXXXXXXX-Y</em>"
showIcon="true"
enableFormattedText="true"
/>
<form:SimpleForm
editable="true"
layout="ResponsiveGridLayout"
labelSpanM="5"
>
<Label text="Restricting inputs via MaskInput" />
<MaskInput mask="99.999.999-Y">
<rules>
<MaskInputRule
maskFormatSymbol="Y"
regex="[a-zA-Z0-9]"
/>
</rules>
</MaskInput>
<Label text="Validating inputs via binding type" />
<Input xmlns:core="sap.ui.core"
core:require="{ StringType: 'sap/ui/model/type/String' }"
value="{
path: '/value',
type: 'StringType',
constraints: {
search: '[0-9]{8,}-[a-zA-Z]'
}
}"
/>
</form:SimpleForm>
</Page>
</App>
</mvc:View>`,
models: new JSONModel({ value: "" }),
});
Messaging.registerObject(control, true);
control.placeAt("content");
});
<script id="sap-ui-bootstrap"
src="https://sdk.openui5.org/resources/sap-ui-core.js"
data-sap-ui-libs="sap.ui.core,sap.m"
data-sap-ui-onInit="onUI5Init"
data-sap-ui-async="true"
data-sap-ui-compatVersion="edge"
data-sap-ui-excludeJQueryCompat="true"
data-sap-ui-xx-waitForTheme="init"
></script>
<body id="content" class="sapUiBody sapUiSizeCompact"></body>
PS:您可能想知道为什么
"9"
在 mask
定义中起作用。 默认情况下,MaskInput 包含 rule
/[0-9]/
具有 maskFormatSymbol
"9"
。
您可以使用正则表达式来验证
var pattern = \[0-9]{8,}-[a-zA-Z]\;
return pattern.test('12345678-A'); //will return true
[0-9]{8,}
- 前 8 个字符的数字-
比赛-[a-zA-Z]
- 一个字符大写或小写