2016-10-05 2 views
0

У меня есть поле, где пользователь должен заполнить свой номер социального страхования.Подтвердить, заполнить и потенциально заблокировать при наборе

Если пользователи дата рождения является 14 ноября 1990

Социальная защита начинается с 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) пресет с опцией «значение», как показано ниже (но пользователи должны удалить «_» символов по сами)

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

2) Проверьте формат номера с регулярным выражением на стороне сервера, поэтому добавьте эту строку в модель. (Это подтверждает весь формат Ssn с xx.xx.xx-XXX.XX)

ssn_regexp = /\A\d{2}\.\d{2}\.\d{2}-\d{3}\.\d{2}\z/ 

validates :ssn, 
    format: { with: ssn_regexp } 

3) опция «MaxLength» ограничивает длину чисел должны быть заполнены в поле ввода.

Смежные вопросы