ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ Π²Π²ΠΎΠ΄Π° ΠΌΠ°ΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, response-text-mask) Ρ Formik?
ΠΠ°, Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅ΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊ Π»ΡΠ±ΠΎΠΌΡ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ Π²Π²ΠΎΠ΄Ρ.
@jaredpalmer ΡΠΏΠ°ΡΠΈΠ±ΠΎ. Π― ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ Π·Π΄Π΅ΡΡ. ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Ρ
ΠΎΡΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π» (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ react-text-mask
):
input = <Field name={name} render={({ field }) => {
return <MaskedInput mask={Masks[mappedField.mask]}
{...field}
id={name}
placeholder={mappedField.placeholder[language]} />
}} />
@ThiagoMiranda, ΠΊΠ°ΠΊ Π²Π°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΡΠΈΠΌ Π°Π³Π°:
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
, ΠΊΠΎΡΠΎΡΠ°Ρ 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___Β» ΠΈ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°.
ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ 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
):