用连字符替换Dojo NumberTextBox分隔符逗号

时间:2011-06-01 18:12:43

标签: javascript dojo

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

默认的过滤器方法来自 _TextBoxMixin.js ,这是实现trim,uppercase,lowercase和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('');
    }
});