2011-06-01 40 views

回答

0

这不是一个真正的数字,就像你想要保存的字符串模式一样,它恰巧有数字(我想你可以说你想让千位分隔符变成一个破折号而不是逗号吗?dojo.number .format支持覆盖千位分隔符,但我认为NumberTextBox不会)

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

+0

嗨Peller,谢谢你的回复。你说得对,我想用连字符代替逗号。在后端,我不需要保存这个值,因为值没有任何连字符或逗号。任何良好的例子子类化ValidationTextBox并实现这个? – t0mcat 2011-06-03 04:26:22

+0

解决了它。使用ValidationTextBox并摆脱逗号的永久:) – t0mcat 2011-06-03 16:47:34

0

我正在做一些类似的电话号码输入。这会将一个ValidationTextBox值重新格式化为### - ### - ####。 (I选择不使用道场/号码,因为我已经有数字数组,并与接头添加短划线是相当简单的)

默认滤波器方法来自_TextBoxMixin.js,这是在修剪,大写字母,小写字母和特殊字符都已实现。

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(''); 
    } 
});