目前 extjs numberfield 允许在字段中使用除数字以外的“-”连字符。如何限制打字?如果我提供自定义 vtype 验证,它只会在我提交之后进行检查。
问问题
3182 次
5 回答
1
使用 autoStripChars 并从 initComponent 中的允许中删除连字符。更正的代码如下。
autoStripChars: true,
initComponent: function() {
var me = this,
allowed;
me.callParent();
me.setMinValue(me.minValue);
me.setMaxValue(me.maxValue);
// Build regexes for masking and stripping based on the configured options
if (me.disableKeyFilter !== true) {
allowed = me.baseChars + '';
if (me.allowDecimals) {
allowed += me.decimalSeparator;
}
/* removed code
if (me.minValue < 0) {
allowed += '-';
}
*/
allowed = Ext.String.escapeRegex(allowed);
me.maskRe = new RegExp('[' + allowed + ']');
if (me.autoStripChars) {
me.stripCharsRe = new RegExp('[^' + allowed + ']', 'gi');
}
}
}
于 2012-06-01T12:36:02.823 回答
0
您需要创建自定义 VType。在文本字段发生任何更改后调用 VType 验证,您可以配置允许输入的字符:
http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.VTypes
看看xxxMask
房产。
于 2012-06-01T10:12:27.113 回答
0
您还可以使用带有 maskRe 配置的常规文本字段。
maskRe: /[0-9]/
于 2012-06-01T23:08:55.477 回答
0
与@lagnat 的回复类似,这是一个白名单,您可以使用 stripCharsRe 配置将字符列入黑名单。
stripCharsRe: /-/
如果您想限制负值。
minValue: 0
于 2014-01-17T02:06:01.247 回答
0
{
minValue: 0,
autoStripChars: true,
allowExponential: false
}
于 2015-11-12T13:09:04.183 回答