1

目前 extjs numberfield 允许在字段中使用除数字以外的“-”连字符。如何限制打字?如果我提供自定义 vtype 验证,它只会在我提交之后进行检查。

4

5 回答 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 回答