如何使用Yup验证没有重复

时间:2020-02-12 12:13:40

标签: reactjs forms yup

我有一个验证,它仅通过检查其字段是否违反其唯一规则来验证其字段,但它允许在数组内部进行重复。

我想要某种不允许在其中包含重复值的条件。

我的对象

respostas: Yup.array()
    .of(
      Yup.object().shape({
        nome: Yup.string()
          .trim()
          .max(1000, Messages.RESPOSTA_ENQUETE_TAMANHO_MAXIMO)
          .required(Messages.CAMPO_OBRIGATORIO)
      })
    )
    .required(Messages.RESPOSTA_QUANTIDADE_MINIMA)

例如,我会有一个这样的数组:[aaa,bbb,aaa]允许,但我不希望重复。

2 个答案:

答案 0 :(得分:2)

要验证这一点,您可以编写自己的.test()。您可以将以下测试添加到Yup对象。

.test("Unique", "Values need te be unique", values => {
    return (new Set(values)).size === values.length;
})

该错误通常会添加到对象,而不是在特定字段。

答案 1 :(得分:0)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // InsertServ.Style.Add("visibility", "hidden");
        InsertServ.Visible = false;
        InsertService.Visible = false;
        InsertSignal.Visible = false;
        gridSignalsByService.Visible = false;
        DropDownList3.Visible = false;
        DropDownList4.Visible = false;
        Button6.Visible = false;
        Button7.Visible = false;
        DataAccess daServer = new DataAccess();
        DataTable dt = daServer.GetServers();
        DropDownList1.DataSource = dt;
        DropDownList1.DataBind();

        DataAccess daSignal = new DataAccess();
        DataTable dr = daSignal.GetSignals();
        DropDownList2.DataSource = dr;
        DropDownList2.DataBind();

        dr = daSignal.GetSignals();
        DropDownList3.DataSource = dr;
        DropDownList3.DataBind();

        dt = daServer.GetServers();
        DropDownList4.DataSource = dt;
        DropDownList4.DataBind();

        dt = daServer.GetServers();
        DropDownList5.DataSource = dt;
        DropDownList5.DataBind();

        serviceDescriptionADD.Attributes.Add("onkeydown", "javascript:ChangeSize()");
    }

    DataAccess da = new DataAccess();
    da.GetServers();
    da.GetServicesForms();
}