Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何限制ComboBox中的用户输入仅限于SAPUI5中的模型数据_Javascript_Combobox_Sapui5 - Fatal编程技术网

Javascript 如何限制ComboBox中的用户输入仅限于SAPUI5中的模型数据

Javascript 如何限制ComboBox中的用户输入仅限于SAPUI5中的模型数据,javascript,combobox,sapui5,Javascript,Combobox,Sapui5,我有一个场景,我想限制用户只输入只加载到组合框中的文本,如这个多组合框示例所示。[请注意,这不是我的jsbin。请在此帖子中发布您的答案] 在上面的示例中,只允许用户输入组合框中存在的字符,例如,输入“s”将提示输入无效并阻止用户键入。但是,我没有使用MultimboBox,而是使用ComboBox,在默认的SAPUI5ComboBox中找不到该函数 如上例所示,用户不受限制,可以向组合框输入任何内容。有没有关于如何将MultimboBox中的相同功能实现到组合框的建议?在组合框的更改事件中

我有一个场景,我想限制用户只输入只加载到组合框中的文本,如这个多组合框示例所示。[请注意,这不是我的jsbin。请在此帖子中发布您的答案]

在上面的示例中,只允许用户输入组合框中存在的字符,例如,输入“s”将提示输入无效并阻止用户键入。但是,我没有使用MultimboBox,而是使用ComboBox,在默认的SAPUI5ComboBox中找不到该函数


如上例所示,用户不受限制,可以向组合框输入任何内容。有没有关于如何将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");