textfield maskRe don't type dot extjs 5 错误?
textfield maskRe dont type dot extjs 5 bug?
我的应用程序有一个文本字段,它只允许数字(没有逗号或点)。
maskRe 上的以下正则表达式适用于 extjs 4 和 6,但不适用于 extjs 5。
Ext.create('Ext.form.Panel', {
title: 'Textfield as numberfield',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'textfield',
name: 'number',
fieldLabel: 'Number',
maskRe: /[0-9]/
}]
});
这是一个错误吗?
是否有解决方法?
使用此代码:
items: [{
xtype: 'textfield',
name: 'number',
fieldLabel: 'Number',
maskRe: /[0-9]/
}]
maskRe
在 5.1.2 中正确应用,但在 5.1.1 中不正确。我发现 this forum thread 关于那个问题。所以我担心您必须升级到新的 Ext 或向后移植错误修复。
此外,似乎对 maskRe
的作用存在混淆。
maskRe
仅应用于当前击键。如果您的字段包含 elis
而您键入 a
,它只会检查 maskRe
是否允许 a
,而不检查是否允许 elisa
。所以你可以定义一组可以输入的特定字符,但是你不能定义一个特定的字符最多可以输入一次或者在每 a
之后你必须输入 b
。由于击键始终只包含一个字符,因此在 maskRe
上使用量词是无用的,但不会产生积极的危害。
对于其他验证,有 regex
,它不会阻止输入,但除非满足正则表达式,否则将字段标记为无效;或者你必须添加一个 change
或 blur
事件并自己进行检查(如果无效则更改值)。
请注意,您可以轻松地禁止 submission/processing 无效表单,即至少包含一个无效字段的表单。您不必删除错误的条目,您可以让用户更正它(例如,向 IBAN 添加一个缺失的数字,而不必重新输入)
我建议使用 change
事件来检查双逗号,或将点更改为逗号,反之亦然(取决于您所需的输入格式)。
我的应用程序有一个文本字段,它只允许数字(没有逗号或点)。
maskRe 上的以下正则表达式适用于 extjs 4 和 6,但不适用于 extjs 5。
Ext.create('Ext.form.Panel', {
title: 'Textfield as numberfield',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'textfield',
name: 'number',
fieldLabel: 'Number',
maskRe: /[0-9]/
}]
});
这是一个错误吗?
是否有解决方法?
使用此代码:
items: [{
xtype: 'textfield',
name: 'number',
fieldLabel: 'Number',
maskRe: /[0-9]/
}]
maskRe
在 5.1.2 中正确应用,但在 5.1.1 中不正确。我发现 this forum thread 关于那个问题。所以我担心您必须升级到新的 Ext 或向后移植错误修复。
此外,似乎对 maskRe
的作用存在混淆。
maskRe
仅应用于当前击键。如果您的字段包含 elis
而您键入 a
,它只会检查 maskRe
是否允许 a
,而不检查是否允许 elisa
。所以你可以定义一组可以输入的特定字符,但是你不能定义一个特定的字符最多可以输入一次或者在每 a
之后你必须输入 b
。由于击键始终只包含一个字符,因此在 maskRe
上使用量词是无用的,但不会产生积极的危害。
对于其他验证,有 regex
,它不会阻止输入,但除非满足正则表达式,否则将字段标记为无效;或者你必须添加一个 change
或 blur
事件并自己进行检查(如果无效则更改值)。
请注意,您可以轻松地禁止 submission/processing 无效表单,即至少包含一个无效字段的表单。您不必删除错误的条目,您可以让用户更正它(例如,向 IBAN 添加一个缺失的数字,而不必重新输入)
我建议使用 change
事件来检查双逗号,或将点更改为逗号,反之亦然(取决于您所需的输入格式)。