Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
Use default Material-UI validation in form submit

I'm trying to implement a form with validation:

import React from 'react';

import { useForm } from "react-hook-form";
import axios, {AxiosResponse} from "axios";
import {Box, Button, Container, Grid, Typography} from "@material-ui/core";
import TextField from '@material-ui/core/TextField';

export async function postTicket(data: TicketDTO): Promise<AxiosResponse<TicketDTO[]>> {
  return await axios.post<TicketDTO[]>(
      `http://localhost:8080/api/support/tickets/create`
  );
}

export interface TicketDTO {
  title?: string;
}

export default function OpenTicket(props: any) {
  const {
      register,
      handleSubmit,
      formState: { errors }
  } = useForm<TicketDTO>();

  const onSubmit = async (data: TicketDTO) => {
      try {
          await postTicket(data);
      } catch (err) {
          console.log(err);
      }
  };

  return (
      <Container>
           <form onSubmit={handleSubmit(onSubmit)}>
               <TextField
                   id="outlined-full-width"
                   label="Name"
                   {...register("title", { required: true, maxLength: 20 })}
                   placeholder="Placeholder"
                   helperText="Full width!"
                   fullWidth
                   margin="normal"
                   InputLabelProps={{
                       shrink: true,
                   }}
                   variant="outlined"
               />

              <Button
                  variant="contained"
                  color="primary"
                  size="small"
              >
                  Submit
              </Button>
          </form>
      </Container>
  );
}

Sandbox: https://stackblitz.com/edit/react-ts-4pnf8b?file=Hello.tsx

But when I click submit button nothing happens. I would like to use the Materia-ui default validation messages? Do you know where I'm wrong?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

I have made some modifications to your code,

  1. Added type to your button as submit
  2. required can be directly added to Text-Field.
  3. maxLength can be applied as part of inputProps.

I am not quite sure what you are doing in your submit event. Ignoring for now.

https://stackblitz.com/edit/react-ts-dufrzd?file=Hello.tsx

<form onSubmit={handleSubmit(onSubmit)}>
        <TextField
          id="outlined-full-width"
          label="Name"
          required          
          placeholder="Placeholder"
          helperText="Full width!"
          fullWidth
          margin="normal"
          InputLabelProps={{
            shrink: true,
          }}
          inputProps={{maxLength:20}}
          variant="outlined"
        />

        <Button variant="contained" color="primary" size="small" type="submit">
          Submit
        </Button>
      </form>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda