Formikμμ Mask μ λ ₯ νλ¬κ·ΈμΈ (μ : react-text-mask)μ μ¬μ©ν μ μμ΅λκΉ?
μ, λ€λ₯Έ μ¬μ©μ μ μ μ λ ₯μ²λΌ μ·¨κΈν©λλ€.
@jaredpalmer κ°μ¬ν©λλ€. λλ μ¬κΈ°μ κ·Έκ²μ μμ λλ€. λꡬλ μ§ λ΄κ° μ΄λ»κ²νλμ§λ³΄κ³ μΆλ€λ©΄ ( react-text-mask
) :
input = <Field name={name} render={({ field }) => {
return <MaskedInput mask={Masks[mappedField.mask]}
{...field}
id={name}
placeholder={mappedField.placeholder[language]} />
}} />
@ThiagoMiranda μ΄λ»κ² λ§μ€ν¬ λ λ¬Έμμ΄μ μ ν¨μ±μ κ²μ¬ ν μ μμμ΅λκΉ?
μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ yup :
passport: yup
.string()
.matches(/(^[0-9]+$)/, 'only digits here')
.required('enter something')
.min(4, 'Number of digits left: ' + digitsLeft)
.max(4, 'This is too much')
λλ κ° "0___"μ μ»κ³ μ΅μ μ΅λ κ·μΉμ λν΄ μ ν¨μ±μ κ²μ¬ ν μ μμ΅λλ€.
μ΄κ²μ΄ μλνμ§ μλ μ΄μ
λ§μ€νΉ λ μ λ ₯κ³Ό λ§μ€νΉ λ° λ λλ§μ΄ μ νμλμ§λ§ νλμ μ΄λ¦μ΄ μμ΄λ values.maskedλ₯Ό μ λ ₯νλ©΄ μ λ°μ΄νΈλμ§ μμ΅λλ€.
Field
λ field
propμ μ λ¬νκΈ° λλ¬Έμ Field
MaskedInput
λ νΈλ€λ¬μ μ¬λ°λ₯΄κ² 맀νλμ§ μμ΅λλ€.
μ’μμ, νλ μνμ΄ νλμ μ μμλ μνμ λͺ¨λ ν¬ν¨νμ§ μμ΅λλ€.
@yyynnn- κ°μ λ¬Έμ κ° λ°μνμ΅λλ€. λ§μ€ν¬ λ¬Έμλ₯Ό μ κ±°νκ³ Formikμ setFieldValue
μλ νΈμΆμ μ κ±°νλ μ¬μ©μ μ§μ λ³κ²½ μ²λ¦¬κΈ°λ₯Ό λ§λ€μμ΅λλ€.
handleChange = (event, field, form, charsToStrip) => {
const cleanValue = stripCharacters(event.target.value, charsToStrip)
form.setFieldValue(field.name, cleanValue)
}
function stripCharacters (string, characters) {
const re = new RegExp(`[${characters}]+`, 'g')
return string.replace(re, '')
}
@ThiagoMiranda μ΄λ»κ² λ§μ€ν¬ λ λ¬Έμμ΄μ μ ν¨μ±μ κ²μ¬ ν μ μμμ΅λκΉ?
...
λλ κ° "0___"μ μ»κ³ μ΅μ μ΅λ κ·μΉμ λν΄ μ ν¨μ±μ κ²μ¬ ν μ μμ΅λλ€.
plsλ λ€λ₯Έ μλ₯Ό μ°Έμ‘°νμμμ€ https://codesandbox.io/s/4rkyylp24w
@jaredpalmer κ°μ¬ν©λλ€. λλ μ¬κΈ°μ κ·Έκ²μ μμ λλ€. λꡬλ μ§ λ΄κ° μ΄λ»κ²νλμ§λ³΄κ³ μΆλ€λ©΄ (
react-text-mask
) :λλμ΄ μΌ
<Field name='telefone' > {({ field }) => ( <MaskedInput mask={['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]} {...field} placeholder='Telefone' className="form-control" /> )} </Field>
κ°μ₯ μ μ©ν λκΈ
@jaredpalmer κ°μ¬ν©λλ€. λλ μ¬κΈ°μ κ·Έκ²μ μμ λλ€. λꡬλ μ§ λ΄κ° μ΄λ»κ²νλμ§λ³΄κ³ μΆλ€λ©΄ (
react-text-mask
) :