【问题标题】:ExtJs NumberFieldExtJs 数字字段
【发布时间】:2011-02-10 12:25:25
【问题描述】:

我正在使用 ExtJs NumberField。好消息是它验证只输入了数字。 但我也想要一个连字符。我怎么能去编辑 javascript

  var <portlet:namespace/>issueNoField = new Ext.form.NumberField({  //This takes only numbers
             fieldLabel: 'Issue No',
             width: 120,
             displayField: 'Enter no',  
             valueField:'IssNo'
         });

【问题讨论】:

  • &lt;portlet:namespace/&gt; 是怎么回事?

标签: javascript extjs input numbers


【解决方案1】:
var <portlet:namespace/>issueNoField = new Ext.form.TextField({  //This takes only numbers
  fieldLabel: 'Issue No',
  width: 120,
  regex: /[1-9-]*/
});

【讨论】:

    【解决方案2】:

    使用“baseChars”选项。

         var <portlet:namespace/>issueNoField = new Ext.form.NumberField({  //This takes only numbers
             fieldLabel: 'Issue No',
             width: 120,
             displayField: 'Enter no',  
             valueField:'IssNo'
             baseChars: "0123456789-"
         });
    

    【讨论】:

    • 我部署了它,它不接受。问题是 NumberField 在表单级别本身验证是否输入了数字。它甚至不会进入检查baseChars。我将尝试使用常规文本字段并使用 baseChars。
    • 您不能将 baseChars 用于常规文本字段,因为 baseChars 是由 NumberField 类定义的。
    • 应该可以。我总是将 baseChars 用于 NubmerField。无论如何,您可以使用带有正则表达式验证的简单文本字段。
    • 如果您想在输入中使用连字符(不是数字前面的“减号”),则它不再是数字输入。使用带有正则表达式的 TextField。
    • 你能帮我使用简单的文本字段和正则表达式来允许数字中间的连字符吗?我是 JS 新手
    【解决方案3】:

    试试Fiddle

    最好使用文本字段并将 maskRe 属性添加为

    maskRe: /^[0-9 -]$/

    【讨论】:

      【解决方案4】:

      连字符是否只是传统的,如美国邮政编码 (99999-9999)?在这种情况下,您应该只接受数字输入,在到达该位置时插入连字符,并忽略任何非数字字符。

      如果连字符很重要,因此“12-345”和“123-45”是不同的输入,那么您阅读的是文本而不是数字。但是,那将是一个极其不友好的系统。

      【讨论】:

        【解决方案5】:

        Regex 属性对我没有用,我改用下面的代码:

        maskRe: /[1-9-]/,
        

        【讨论】:

          【解决方案6】:
          {
          xtype: 'textfield',
          mask: '(999) 999-9999'
          }
          

          我在这里提议的是,我们使用 text field 并为其添加掩码以仅捕获所需格式的数值。

          你可以根据自己的需要屏蔽它。

          例如:

          '9999999999'
          '999-999-9999'
          

          More info这将以您想要的格式提供电话号码

          【讨论】:

          • 最好描述有关您的解决方案的更多详细信息,仅包括可能始终不可用的外部链接,您并没有多大帮助!
          • 感谢@MehdiMaghrooni 的建议
          【解决方案7】:

          只需将您的 numberfield 的 allowExponential 配置设置为 false。默认情况下为 true,它会将 'e+-'decimalSeparator 添加为有效字符。

          这是真的。来源检查来源。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-05-17
            • 1970-01-01
            • 2011-04-29
            相关资源
            最近更新 更多