我如何限制组合框中的用户输入,以仅在SAPUI5中模拟数据

问题描述:

我有一个场景,我想限制用户只输入文本,只加载到组合框中看到的MultiComboBox示例。 [请注意,这不是我的jsbin。请张贴在这个线程你的答案]我如何限制组合框中的用户输入,以仅在SAPUI5中模拟数据

http://jsbin.com/sicixisozi/edit?html,js,output

在上面的例子中

,只允许用户进入存在于组合框的字符,比如输入“S”会提示输入无效,防止用户从打字。然而,我不使用MultiComboBox但将使用ComboBox代替并且此功能未在缺省SAPUI5 组合框发现

http://jsbin.com/xenidoh/embed?html,output

var mcb = new sap.m.ComboBox({ 

如见于上述例子中,用户并不限于并且能够向组合框输入任何内容。任何建议如何我可以在MultiComboBox中实现相同的功能到组合框?

+0

只是一个建议:如果你想完全禁用字,就可以附加一个onAfterRendering事件委托功能到ComboBox。在该功能中,您可以完全禁用输入框。这意味着用户不能在该字段中输入任何内容。您还可以使用相同的功能来检查用户输入的内容,将其与组合框中显示的列表进行匹配,然后允许或禁止键入。 – Sid

关于组合框的更改事件,请检查oComboBox.getSelectedkey()是否为空或空。如果它是空的,这意味着用户没有选择正确的值,因此返回一个错误。

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

+0

我在说如何实现在MultiComboBox中找到相同的功能ComboBox – user1166085

+0

@ user1166085请看我更新的答案 - 我很快嘲笑了一些东西 – neeko

+0

这是一个非常优雅的方式来实现功能!谢谢! – user1166085