Javascript 如何限制ComboBox中的用户输入仅限于SAPUI5中的模型数据
我有一个场景,我想限制用户只输入只加载到组合框中的文本,如这个多组合框示例所示。[请注意,这不是我的jsbin。请在此帖子中发布您的答案] 在上面的示例中,只允许用户输入组合框中存在的字符,例如,输入“s”将提示输入无效并阻止用户键入。但是,我没有使用MultimboBox,而是使用ComboBox,在默认的SAPUI5ComboBox中找不到该函数Javascript 如何限制ComboBox中的用户输入仅限于SAPUI5中的模型数据,javascript,combobox,sapui5,Javascript,Combobox,Sapui5,我有一个场景,我想限制用户只输入只加载到组合框中的文本,如这个多组合框示例所示。[请注意,这不是我的jsbin。请在此帖子中发布您的答案] 在上面的示例中,只允许用户输入组合框中存在的字符,例如,输入“s”将提示输入无效并阻止用户键入。但是,我没有使用MultimboBox,而是使用ComboBox,在默认的SAPUI5ComboBox中找不到该函数 如上例所示,用户不受限制,可以向组合框输入任何内容。有没有关于如何将MultimboBox中的相同功能实现到组合框的建议?在组合框的更改事件中
如上例所示,用户不受限制,可以向组合框输入任何内容。有没有关于如何将MultimboBox中的相同功能实现到组合框的建议?在组合框的更改事件中,检查oComboBox.getSelectedkey()是否为null或空。如果为空,则表示用户没有选择正确的值,因此返回错误
oComboBox.attachChange(function(oEvent){
var newval = oEvent.getParameter("newValue");
var key = oEvent.getSource().getSelectedItem();
if (newval !== "" && key === null){
oEvent.getSource().setValue("");
oEvent.getSource().setValueState("Error");
}else{
oEvent.getSource().setValueState("None");
}
});
或者,如果您使用的是XML视图,请将该函数添加到change=“”
oComboBox是您的组合框
此外,您不必剥夺用户的打字权利。如果他键入的内容与列表中的任何键都不匹配,您可以使用错误状态来拍打他们:
onLiveValidate:function(oEvent){
var oInput= oEvent.getSource();
var bValid= !oInput.getSelectedKey();
oInput.setValueState(bValid ? "Error":"None");
只是一个建议:如果要完全禁用键入,可以将onAfterRendering事件委托函数附加到ComboBox。在该函数中,您可以完全禁用inputbox。这意味着用户不能在字段中键入任何内容。您还可以使用相同的功能检查用户键入的内容,将其与组合框中显示的列表相匹配,然后允许或不允许键入。我要说的是如何实现MultimboBox中的相同功能,以便ComboBox@user1166085请看我最新的答案-我很快就模仿了一些东西,这是实现该功能的一种非常优雅的方式!非常感谢。
onLiveValidate:function(oEvent){
var oInput= oEvent.getSource();
var bValid= !oInput.getSelectedKey();
oInput.setValueState(bValid ? "Error":"None");