首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >所需3项输入中的2项yup验证

所需3项输入中的2项yup验证
EN

Stack Overflow用户
提问于 2022-07-25 07:37:56
回答 1查看 58关注 0票数 0

我用我的表格证明了这一点。我想验证用户是否至少完成了3个输入中的2个。当用户未完成时,我只想将文本的颜色更改为红色。如何设置我的架构来做到这一点。这是我的表格:

代码语言:javascript
复制
 <form>
      {!loading ? (
        <Paper title={t('common:cardTitles.extendDevice')} {...register('extendDevice')}>
          <div className="flex md:flex-row flex-col justify-center items-center md:justify-between border-b-[1px] md:pb-6 pb-[17px]">
            <h3 className="font-bold subheading">{t('common:deviceData')}</h3>
            <div className="flex flex-row gap-1">
              <ErrorIcon className="text-[#80858F] w-6" />
              <p
                className={mergeClasses(
                  'md:text-sm text-xs text-[#80858F]',
                  errors.extendDevice ? 'text-red-600' : 'text-[#80858F]',
                )}
              >
                {t('common:errors.atLeastTwoFields')}
              </p>
            </div>
          </div>
          <div className="md:pt-6 pt-[17px] grid md:grid-cols-2 gap-4">
            <TextInput
              {...register('serialNumber')}
              label={t('common:labels.serialNumber')}
              name="serialNumber"
              placeholder={t('common:placeholders.typeSerialNumber')}
            />
            <TextInput
              {...register('businessNumber')}
              label={t('common:labels.businessNumber')}
              name="business-number"
              placeholder={t('common:placeholders.typeBusinessNumber')}
            />
          </div>
          <div className="pt-4">
            <NumberInput
              {...register('pinNumber')}
              label={t('common:labels.pin')}
              name="pin-number"
              placeholder={t('common:placeholders.typePinNumber')}
            />
          </div>
          <div className="flex w-full justify-end pt-4">
            <Button
              className="py-3.5 px-6 bg-[#336BB3] text-white md:w-[115px] w-full"
              label={t('common:labels.verify')}
              onClick={handleSubmit(onSubmit)}
              type="submit"
            />
          </div>
        </Paper>
      ) : (
        <VerificationInProgress />
      )}
    </form>
EN

回答 1

Stack Overflow用户

发布于 2022-07-25 08:32:56

您可以用YUP编写测试,以检查是否输入了特定字段。

代码语言:javascript
复制
const formValidation = Yup.object().shape({
    name: Yup.string().test(
      "oneOfRequired",
      "One of the three fields need to be filled in",
      function (item) {
        return this.parent.name || this.parent.surname || this.parent.country;
      }
    ),
    surname: Yup.string().test(
      "oneOfRequired",
      "One of the three fields need to be filled in",
      function (item) {
        return this.parent.name || this.parent.surname || this.parent.country;
      }
    ),
    country: Yup.string().test(
      "oneOfRequired",
      "One of the three fields need to be filled in",
      function (item) {
         // Check if one of them have been filled in 
        return this.parent.name || this.parent.surname || this.parent.country;
      }
    )
  });

下面是一个代码框:https://codesandbox.io/s/goofy-bell-ji28jy?file=/src/App.js:279-302

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73105534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档