输入时验证、预填充和可能阻塞

Posted

技术标签:

【中文标题】输入时验证、预填充和可能阻塞【英文标题】: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 个额外数字。

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

【问题讨论】:

【参考方案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\d2\.\d2\.\d2-\d3\.\d2\z/

validates :ssn,
  format:  with: ssn_regexp 

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

【讨论】:

以上是关于输入时验证、预填充和可能阻塞的主要内容,如果未能解决你的问题,请参考以下文章

带有预填充数据的 Angular2 表单验证

允许从属(二级)数据验证的例外情况。

h5短信验证码自动填充时总是被复制两遍

Grails Spring Security 在身份验证之前预检查普通密码

手机验证码自动填充怎么设置

华为怎么设置验证码自动填充