【问题标题】:Validate, prefill and potentially block while typing输入时验证、预填充和可能阻塞
【发布时间】:2017-02-13 22:27:07
【问题描述】:

我有一个字段,用户必须填写他们的社会安全号码。

如果用户的生日是 1990 年 11 月 14 日

社保以90.11.14-XXX.XX开头(X代表随机数0-9)

我正在使用 simple_form

<%= f.input :ssn, 
            label: t('employee.social_security_no'),
            input_html: { placeholder: "XX.XX.XX - XXX.XX" }%>

我想实现以下目标:

1) 如何预设 90.11.27-_ _ _ 设置的输入字段。 _ _

2) 并验证剩余的 5 个数字实际上是数字

3) 并限制字段,使用户不能填写超过 5 个额外数字。

非常感谢任何帮助我上路的人。

【问题讨论】:

    标签: javascript jquery ruby-on-rails simple-form


    【解决方案1】:

    我不确定您真正想要实现什么,但您可以执行以下操作:

    1) 预置 'value' 选项,如下所示。(但用户应自行删除 '_' 字符)

    <%= f.input :ssn,
      label: t('employee.social_security_no'),
      input_html: { value: "#{@user.birthdate.strftime('%y.%m.%d')}-___.__" },
      maxlength: 15
    %>
    

    2) 在服务器端用正则表达式检查数字格式,因此在模型中添加这些行。 (这用 XX.XX.XX-XXX.XX 验证整个 ssn 格式)

    ssn_regexp = /\A\d{2}\.\d{2}\.\d{2}-\d{3}\.\d{2}\z/
    
    validates :ssn,
      format: { with: ssn_regexp }
    

    3) 'maxlength' 选项限制要在输入字段中填写的数字的长度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-13
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 2021-07-29
      • 2017-11-23
      相关资源
      最近更新 更多