如何在UI5中使用输入的约束属性?

时间:2016-08-03 12:01:27

标签: javascript sapui5

我试图限制用户只输入数字。 也许我可以使用正则表达式来做到这一点,但我不知道确切的语法。 我不想要小数或特殊字符。

<Input type="Number"
value="{
    type : 'sap.ui.model.type.Number',
    constraints : {
        minLength: 1,
        maxLength: 15,
        validate: ...
    }
}" />

3 个答案:

答案 0 :(得分:4)

sap.ui.model.type.Number不存在,但IntegerFloat确实存在。

<Input 
    type="Number"
    value="{
        path: '/number',
        type: 'sap.ui.model.type.Integer',
        formatOptions: {
            groupingEnabled: false,
            groupingSeparator: ',',
            decimalSeparator: '.'
        },
        constraints : {
            minimum: '0',
            maximum: '99'
        }
}" />

我认为整数类型正是您所需要的。只有整数有效,默认情况下没有分组,小数或其他字符。如果输入了无效条目,您可以使用SAPUI5的error handling capabilities提醒用户。

如果要防止输入无效字符,可以使用屏蔽输入控件。 E.g:

<MaskInput 
    mask = "999999" 
    placeholderSymbol = "_" 
    placeholder = "Enter a six digit number"/>

但是,我个人觉得它们对于普通号码来说有点难看。掩码输入控件实际上是指遵循某种模式的输入值,例如信用卡号或邮政编码。

答案 1 :(得分:1)

<Input type="Number"只接受数字,但是如果你仍然想要实现自己的验证,你可以按照下面的regex来做,只考虑数字:

定义regex

regex = /^[0-9]*$/;

liveChange添加到您的输入

    liveChange: function(oEvent){
        if(oEvent.getParameter("liveValue") === "" 
                  || !oEvent.getParameter("liveValue").match(regex)){
                this.setValueState(sap.ui.core.ValueState.Error);
   }
    else{
               this.setValueState(sap.ui.core.ValueState.Success);
    }
   }

答案 2 :(得分:0)

如果将输入类型限制为Number,则不允许(特殊)字符输入到输入字段中。但是,允许使用与数字相关的字符(.,-)。要摆脱它,您可以将属性绑定的数据类型设置为sap.ui.model.type.Integer。您还可以设置minLengthmaxLength等约束。如果用户在2.1中键入,则将抛出验证错误,并且输入字段值状态将设置为Error。

<Input type="Number"
   value="{
      type : 'sap.ui.model.type.Integer',
      constraints : {
          minLength: 1,
          maxLength: 15
   }
}" />

Documentation of the Integer type.

Here is an other example for field validation with MessageManager