答案 0 :(得分:3)
这是sap.m.MaskInput
[API] 的典型用例。使用MaskInput消除了验证(在前端)的需要,因为它甚至不允许输入无效字符,这也改善了用户体验。
当然,您也可以继续使用sap.ui.model.(odata.)type.String
。在这种情况下,您可以使用类型为search
的{{1}}类型等待正则表达式。错误的输入不会传递给绑定模型。
以下是展示这两个示例的演示:
sap.ui.getCore().attachInit(() => sap.ui.require([
"sap/ui/core/mvc/XMLView",
"sap/ui/model/json/JSONModel"
], (XMLView, JSONModel) => 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>00000000-a</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"
reges="[a-zA-Z0-9]"
/>
</rules>
</MaskInput>
<Label text="Validating inputs via binding type" />
<Input id="sapMInput" value="{
path: 'myInput>/value',
type: 'sap.ui.model.type.String',
constraints: {
search: '[0-9]{8,}-[a-zA-Z]'
}
}" />
</form:SimpleForm>
</Page>
</App>
</mvc:View>`,
afterInit: function() {
const mySapMInput = this.byId("sapMInput");
mySapMInput.setModel(new JSONModel({
value: "",
}), "myInput");
sap.ui.getCore().getMessageManager().registerObject(mySapMInput, true);
},
}).then(view => view.placeAt("content"))));
<script id="sap-ui-bootstrap"
src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-libs="sap.ui.core, sap.m"
data-sap-ui-async="true"
data-sap-ui-theme="sap_belize"
data-sap-ui-compatversion="edge"
data-sap-ui-xx-waitfortheme="true"
data-sap-ui-xx-xml-processing="sequential"
></script>
<body id="content" class="sapUiBody sapUiSizeCompact" style="height: 100%;"></body>
PS:你可能会问为什么"9"
在mask
定义中起作用。 By default,MaskInput包含rule
/[0-9]/
的{{1}} maskFormatSymbol
。
答案 1 :(得分:1)
您可以使用正则表达式验证
var pattern = \[0-9]{8,}-[a-zA-Z]\;
return pattern.test('12345678-A'); //will return true
[0-9]{8,}
- 前8个字符的数字
-
匹配 -
[a-zA-Z]
- 一个字符upppercase或小写