将Dojo NumberTextBox分隔符逗号替换为连字符



如何用连字符替换Dojo NumberTextBox中的逗号格式
例如:将123456789转换为123-456-789。

它不再是一个真正的数字,而是一个你想要保留的字符串模式,它中恰好有数字(我想你可以说你希望千位分隔符是破折号而不是逗号?dojo.number.format支持覆盖千位分隔,但我不认为NumberTextBox支持)

我欠你一个例子,但doughays说,实现这一点的方法是创建ValidationTextBox的一个子类,该子类提供一个与你想要的显示/输入模式匹配的正则表达式,并覆盖解析和格式化方法,将数字转换为该模式。

我正在为电话号码输入做类似的事情。这将ValidationTextBox值重新格式化为###-###-####。(我选择不使用dojo/number,因为我已经有了一个数字数组,用splice添加破折号相当简单)

默认的filter方法来自_TextBoxMixin.js,在这里实现trim、大写、小写和propercase。

declare('calpoly/form/FormattingPhoneNumber', [ValidationTextBox], {
    regExp:"\d{3}-\d{3}-\d{4}",
    invalidMessage:"Please enter a 10-digit phone number",
    filter:function(val){
        val = lang.trim(val);
        var s = [];
        for(var i=0; i<val.length;i++){
            if(!isNaN(val[i])){
                s.push(val[i]);
            }
        }
        if(s.length!=10){
            // Not a 10-digit phone number, return what the user typed, regex will invalidate.
            return val;
        }
        s.splice(3,0,'-');
        s.splice(7,0,'-');
        return s.join('');
    }
});

最新更新