Sapui5 根据其Valuehelp项验证输入字段

Sapui5 根据其Valuehelp项验证输入字段,sapui5,Sapui5,我想根据ValueHelp项验证用户输入 我不希望将输入字段设置为valueHelpOnly,因为这样会禁用用户的输入 假设我们有一个“兔子”、“骏马”和“山羊”的价值帮助列表。 我希望用户能够键入它,但是如果他们忘记完全像键入“Rab”而不是“Rabbit”一样键入它,我希望输入字段与值帮助项列表中的输入匹配,并抛出一条无效的输入错误消息 根据值帮助项列表验证用户输入的方法是什么?有没有一种方法可以使用regex来验证这一点?您可以使用sap.m.ComboBox来实现这一点,我建议您使用sa

我想根据ValueHelp项验证用户输入

我不希望将输入字段设置为
valueHelpOnly
,因为这样会禁用用户的输入

假设我们有一个“兔子”、“骏马”和“山羊”的价值帮助列表。 我希望用户能够键入它,但是如果他们忘记完全像键入“Rab”而不是“Rabbit”一样键入它,我希望输入字段与值帮助项列表中的输入匹配,并抛出一条无效的输入错误消息


根据值帮助项列表验证用户输入的方法是什么?有没有一种方法可以使用regex来验证这一点?

您可以使用
sap.m.ComboBox
来实现这一点,我建议您使用
sap.m.Input

例如,“兔子”、“骏马”和“山羊”:

但是如果您想坚持使用
sap.m.Input
,可以通过计算
selectedKey
值来实现。如果没有匹配的键,且值不是空字符串,则该值不是来自值帮助列表。在这种情况下,将输入控件的
valueState
设置为
Error

下面是一个小演示:

sap.ui.getCore().attachInit(()=>sap.ui.require([
“sap/ui/core/Fragment”,
],Fragment=>Fragment.load({
定义:`
`,
控制器:{
onChange:函数(事件){
const input=event.getSource();
const isInvalid=!input.getSelectedKey()和&input.getValue().trim();
input.setValueState(isInvalid?“错误”:“无”);
},
},
})。然后(control=>control.placeAt(“内容”))

您可以通过使用
sap.m.ComboBox
来实现这一点,我推荐使用
sap.m.Input

例如,“兔子”、“骏马”和“山羊”:

但是如果您想坚持使用
sap.m.Input
,可以通过计算
selectedKey
值来实现。如果没有匹配的键,且值不是空字符串,则该值不是来自值帮助列表。在这种情况下,将输入控件的
valueState
设置为
Error

下面是一个小演示:

sap.ui.getCore().attachInit(()=>sap.ui.require([
“sap/ui/core/Fragment”,
],Fragment=>Fragment.load({
定义:`
`,
控制器:{
onChange:函数(事件){
const input=event.getSource();
const isInvalid=!input.getSelectedKey()和&input.getValue().trim();
input.setValueState(isInvalid?“错误”:“无”);
},
},
})。然后(control=>control.placeAt(“内容”))


啊,是的。组合框将是一个不错的选择,只是我的经理认为当有一长串选项可供选择时,ValueHelp更适合,因为ValueHelp会弹出一个可以显示更多项目的对话框。我已经实现了它,但即使从ValueHelp中选择,它也总是处于错误状态onLiveValidate:function(oEvent){var oInput=oEvent.getSource();var bValid=!oInput.getSelectedKey()&&oInput.getValue().trim();oInput.setValueState(bValid?)Error:“None”);},`我希望bValid将getValue()与valueHelp中的项目列表进行比较,而不查看用户是否选择了键。如果键入的值与值帮助项不匹配,我希望用户能够键入值并将其验证为错误或不正确。@eldwichuen感谢您的更新。下周我有空的时候,我会用一个对话来强化我的问题。在当前表单中,输入不会出错。啊,是的。组合框将是一个不错的选择,只是我的经理认为当有一长串选项可供选择时,ValueHelp更适合,因为ValueHelp会弹出一个可以显示更多项目的对话框。我已经实现了它,但即使从ValueHelp中选择,它也总是处于错误状态onLiveValidate:function(oEvent){var oInput=oEvent.getSource();var bValid=!oInput.getSelectedKey()&&oInput.getValue().trim();oInput.setValueState(bValid?)Error:“None”);},`我希望bValid将getValue()与valueHelp中的项目列表进行比较,而不查看用户是否选择了键。如果键入的值与值帮助项不匹配,我希望用户能够键入值并将其验证为错误或不正确。@eldwichuen感谢您的更新。下周我有空的时候,我会用一个对话来强化我的问题。对于当前表单,输入工作无误。