如何限制输入连字符到extjs数字域?

时间:2012-06-01 09:41:51

标签: extjs4 extjs4.1

目前,extjs号码字段允许“ - ”连字符,而不是数字进入该字段。如何限制输入?如果我提供自定义vtype验证,它只在我提交后才会检查。

5 个答案:

答案 0 :(得分:1)

使用autoStripChars并从initComponent中的allowed中删除连字符。更正后的代码。

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

答案 1 :(得分:0)

您需要创建自定义VType。在文本字段中进行任何更改后调用VType验证,您可以配置允许输入的字符:

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.VTypes

查看xxxMask财产。

答案 2 :(得分:0)

您还可以使用带有maskRe config的常规Textfield。

maskRe: /[0-9]/

答案 3 :(得分:0)

与@ lagnat的回复相似,即白名单,您可以使用stripCharsRe配置将字符列入黑名单。

stripCharsRe: /-/

如果您想限制负值。

minValue: 0

答案 4 :(得分:0)

{
    minValue: 0,
    autoStripChars: true,
    allowExponential: false
}