如何将ComboBox中的用户输入限制为仅模拟SAPUI5中的数据

时间:2017-03-23 02:01:33

标签: javascript combobox sapui5

我有一个场景,我想限制用户只输入仅加载到组合框的文本,如此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实现相同的功能?

2 个答案:

答案 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是你的组合框。

http://jsbin.com/vupehukena/1/edit?html,output

答案 1 :(得分:0)

此外,您不必剥夺用户的打字权。如果输入的内容与列表中的任何键都不匹配,则U可以将它们拍成错误状态:

onLiveValidate:function(oEvent){
        var oInput= oEvent.getSource();
        var bValid= !oInput.getSelectedKey();
        oInput.setValueState(bValid ? "Error":"None");