Javascript 如果输入类型设置为数字,如何使用sapui5设置maxlength

Javascript 如果输入类型设置为数字,如何使用sapui5设置maxlength,javascript,sapui5,Javascript,Sapui5,我想在type设置为Number时在输入字段中设置验证,并使用sapui5设置maxlength。但它不起作用 var Price = new sap.m.HBox({ items:[new sap.m.Label({text:"Per Unit Price",required:true,design:"Bold",width:"110px"}), new sap.m.Input("Price",{ width:"150px",type:"Number", v

我想在type设置为Number时在输入字段中设置验证,并使用sapui5设置maxlength。但它不起作用

var Price = new sap.m.HBox({
    items:[new sap.m.Label({text:"Per Unit Price",required:true,design:"Bold",width:"110px"}),
    new sap.m.Input("Price",{ width:"150px",type:"Number",
          value:{
              type : 'sap.ui.model.type.Integer',
              constraints : {
                minLength: 1,
                maxLength: 15
           }
        }

    })]
});

sap.m.Input的方法setMaxLength的说明来自:

此参数与输入类型sap.m.InputType.Number不兼容。如果输入类型设置为数字,则忽略maxLength值

所以这意味着你必须找到其他的方法来做这件事。例如,当您使用sap.m.InputType.Tel格式时,maxLength方法起作用:

var oInput = new sap.m.Input("Price",{ 
      width:"150px",
      type:"Tel",
      minLength: 1,
      maxLength: 15 
});           
oInput.placeAt('content');
这是一个互动的例子

编辑时间:17:30 090117:

我编辑了之前发布的代码,只允许键入您想要的数字(请尝试):


正如Jaro所指出的,API说:如果输入类型设置为Number,则忽略maxLength值。因此,删除输入字段的类型并保留其默认字符串,并设置最小和最大长度:

var oInput = new sap.m.Input({
            value:{
                  type : 'sap.ui.model.type.String',
                  path:"/value",
                  constraints : {
                    maxLength:2,
                    minLength:1
               }
            }
        });
上述代码不允许我输入超过99(2位数字)

编辑:如果需要数字类型输入字段。 下面的代码不允许我成功输入大于100的值

var oInput = new sap.m.Input({
            type:'Number',
            value:{
                  type : 'sap.ui.model.type.Integer',
                  path:"/value",
                  constraints : {
                    minimun:0,
                    maximum:100
               }
            }
        });

在输入的liveChange事件(liveChange=“\u typeNumber”)中对XML尝试此操作

在控制器上:

    _typeNumber: function(oEvent) {
        var value = oEvent.getSource().getValue();
        var bNotnumber = isNaN(value);
        if (bNotnumber === true) {
            oEvent.getSource().setValue(value.substring(0, value.length - 1));
        }
    }

下面输入类型为“Number”的sap.m.Input代码不再工作。我在1.71.30或更高版本上测试了它。可以输入无限多的数字
    _typeNumber: function(oEvent) {
        var value = oEvent.getSource().getValue();
        var bNotnumber = isNaN(value);
        if (bNotnumber === true) {
            oEvent.getSource().setValue(value.substring(0, value.length - 1));
        }
    }