[英]How to make Input->value->type->search dynamic?
通常一個普通人的名字不包含數字,所以我添加了這個search
屬性來防止帶有 RegEx 的數字到我的Input
元素:
type: new sap.ui.model.type.String({}, { search: "^[^0-9]+$" })
但公司名稱應允許使用數字。 那么如何使這個search
值動態化呢?
可視化它:
這是我的最小示例-到目前為止我嘗試過的內容已被注釋掉,因為它不起作用(導致數字始終有效)。
// Set data model let data = { "salutation": "Company", "name": "" }; let oModel = new sap.ui.model.json.JSONModel(); oModel.setData(data); // Create page let oPage = new sap.m.VBox(); oPage.setModel(oModel); // Add salutation input oPage.addItem( new sap.m.Input({ value: { path: "/salutation" } }) ); // Add name input oPage.addItem( new sap.m.Input({ value: { type: new sap.ui.model.type.String({}, { minLength: 2, maxLength: 40, search: "^[^0-9]+$" /* not working... search: { parts: [ "/salutation", ], formatter: (salutation) => salutation === "Company"? "^.*$": "^[^0-9]+$" } */ }), path: "/name", }, required: true, }) ); // Attach validation handlers sap.ui.getCore().attachValidationError(function(oEvent) { oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.Error); }); sap.ui.getCore().attachValidationSuccess(function(oEvent) { oEvent.getParameter("element").setValueState(sap.ui.core.ValueState.None); }); // Insert page oPage.placeAt("content");
<script id='sap-ui-bootstrap' type='text/javascript' src='https://sapui5.hana.ondemand.com/resources/sap-ui-core.js' data-sap-ui-libs="sap.m,sap.ui.commons,sap.ui.table" data-sap-ui-theme="sap_bluecrystal"> </script> <body class='sapUiBody'> <div id='content'></div> </body>
如果一個字段的驗證規則依賴於另一個字段的值,您可以使用change
之類的事件(有或沒有valueLiveUpdate=true
)進行驗證。
類型應該是不依賴於外部生命的東西。
您可以做的另一件事是對稱呼字段的change
事件做出反應,並將輸入字段的類型交換為名稱(取決於稱呼的值)
PS:(編輯)老實說,我不會將名稱字段限制為它可能包含或不包含的任何內容。 根據特定國家/地區的法律,您可能被允許使用數字...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.