2

在我的应用程序中,我有一个必须存储电话号码的字段。该字段不能允许字符,只能允许数字。问题是格式类似于:

0752344234

如果我添加这样的内容,Xpages 会将字段保存为:752344234没有 0。

问题: 我可以使用什么方法在不使用字符串类型字段的情况下在数字前面添加 0?

4

2 回答 2

2

使用validateConstraint验证器:

<xp:inputText
    id="inputText1"
    value="..."
    disableClientSideValidation="true">
    <xp:this.validators>
        <xp:validateConstraint message="Please enter only digits for phone number">
            <xp:this.regex><![CDATA[^[0-9]*$]]></xp:this.regex>
        </xp:validateConstraint>
    </xp:this.validators>
</xp:inputText>

正则表达式^[0-9]*$接受任意数量的数字和一个空字符串。如果您想要至少一位数字,请替换*+.

您不需要根据需要设置输入文本字段。

您可以决定要在哪里显示验证消息。设置选项disableClientSideValidation="false"以在客户端将消息显示为对话框或disableClientSideValidation="true"将消息放入 xp:message/xp:messages 控件。

于 2014-11-12T19:38:08.687 回答
1

这是一个简单的示例,我使用自定义验证器来检查插入值是否仅包含数值。您还可以使用正则表达式来检查值是否具有指定的形式。

<?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:inputText id="inputText1" required="true">
            <xp:this.validators>
                <xp:customValidator>
                    <xp:this.validate><![CDATA[#{javascript:for(var i=0; i< value.length; i++){
        if(isNaN(value.charAt(i))){
            return false
        }
    }}]]></xp:this.validate>
                </xp:customValidator>
            </xp:this.validators>
        </xp:inputText>
        <xp:button id="button1" value="Validate">
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="complete" immediate="false" save="true">
                <xp:this.action><![CDATA[#{javascript://}]]></xp:this.action>
            </xp:eventHandler>
        </xp:button>
        <xp:message id="message1" for="inputText1"></xp:message>
    </xp:view>

要使用自定义验证器,您还必须根据需要标记您的编辑框。

于 2014-11-12T11:09:27.583 回答