输入时验证、预填充和可能阻塞
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' 选项限制要在输入字段中填写的数字的长度。
【讨论】:
以上是关于输入时验证、预填充和可能阻塞的主要内容,如果未能解决你的问题,请参考以下文章