【问题标题】:textfield maskRe dont type dot extjs 5 bug?文本字段掩码不要键入点 extjs 5 错误?
【发布时间】:2016-02-04 05:34:35
【问题描述】:

我的应用有一个只允许使用数字的文本字段(没有逗号或点)。

以下关于 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]/
  }]
});

这是一个错误吗?

有什么解决办法吗?

小提琴:https://fiddle.sencha.com/#fiddle/153c

【问题讨论】:

  • <input type="number" /><input type="text" pattern="[0-9]*" />
  • 你的号码有多少位?
  • 似乎工作jsfiddle.net/c449p7L2
  • 谢谢图沙尔。我认为您的建议在我的情况下不起作用。我编辑了小提琴。
  • 感谢菜鸟。位数几乎是无限的。这是一个以欧元为单位的价值字段。

标签: javascript regex extjs extjs5


【解决方案1】:

使用此代码:

        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,它不会阻止输入,但会将该字段标记为无效,除非满足正则表达式;或者您必须添加 changeblur 事件并自己进行检查(如果无效,请更改值)。

请注意,您可以轻松地禁止提交/处理无效表单,即包含至少一个无效字段的表单。您不必删除错误条目,您可以让用户更正它(例如,向 IBAN 添加一个缺失的数字,而不必重新输入)

我建议使用change 事件来检查双逗号,或将点更改为逗号,反之亦然(取决于您所需的输入格式)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多