我有一个场景,我想限制用户只输入仅加载到组合框的文本,如此MultiComboBox示例中所示。 [请注意,这不是我的jsbin。请在这个帖子中发表您的答案]
http://jsbin.com/sicixisozi/edit?html,js,output
在上面的示例中,只允许用户输入组合框中存在的字符,例如输入's'将提示无效输入并阻止用户输入。但是,我没有使用MultiComboBox,而是使用ComboBox而在默认的SAPUI5 ComboBox
中找不到此功能http://jsbin.com/xenidoh/embed?html,output
var mcb = new sap.m.ComboBox({
如上例所示,用户不受限制,并且能够向组合框输入任何内容。任何建议如何在MultiComboBox中为ComboBox实现相同的功能?
答案 0 :(得分:5)
在组合框的change事件上检查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是你的组合框。
答案 1 :(得分:0)
此外,您不必剥夺用户的打字权。如果输入的内容与列表中的任何键都不匹配,则U可以将它们拍成错误状态:
onLiveValidate:function(oEvent){
var oInput= oEvent.getSource();
var bValid= !oInput.getSelectedKey();
oInput.setValueState(bValid ? "Error":"None");