Instruções

Construir um formulário de reclamação de cliente

Para este laboratório, você recebeu todo o HTML e CSS. Você usará JavaScript para validar o formulário de reclamação. Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório. Histórias de usuário: 1. Quando o formulário for enviado, você deve garantir que:
  • #full-name não está vazio.
  • #email é um formato válido de endereço de e-mail.
  • #order-no é uma sequência de dez números começando com 2024.
  • #product-code segue o padrão XX##-X###-XX#, onde X representa uma letra minúscula ou uma letra maiúscula e # representa um número.
  • #quantity é um número inteiro positivo.
  • pelo menos uma caixa de seleção de #complaints-group está marcada.
  • #complaint-description contém pelo menos vinte caracteres se a caixa de seleção Other estiver marcada.
  • um botão de opção de #solutions-group está selecionado.
  • #solution-description contém pelo menos vinte caracteres se o botão de opção Other estiver selecionado.
1. Você deve ter uma função chamada validateForm que retorna um objeto contendo as seguintes chaves: full-name, email, order-no, product-code, quantity, complaints-group, complaint-description, solutions-group e solution-description. O valor de cada chave deve ser true se o campo do formulário correspondente estiver preenchido corretamente e false caso contrário. Os campos condicionais de descrição devem ser true quando não forem necessários e, caso contrário, validados com base em conterem pelo menos vinte caracteres. 1. Você deve ter uma função chamada isValid que recebe o objeto retornado por validateForm como argumento e retorna true se todos os campos do formulário estiverem corretamente preenchidos e false caso contrário. 1. Se um evento de alteração for acionado em um campo de formulário e ele tiver um valor válido, você deve definir a cor da borda para green. No caso de grupos de caixas de seleção e botões de opção, você deve definir a cor da borda do fieldset pai. 1. Se um evento de alteração for acionado em um campo de formulário e ele contiver um valor inválido, você deve definir a cor da borda para red. No caso de grupos de checkbox e radio button, você deve definir a cor da borda do fieldset pai. 1. Quando você tentar enviar o formulário, deve chamar isValid para validar o formulário. 1. Quando você tentar enviar o formulário, se o formulário tiver algum campo inválido, cada campo inválido deve ser destacado definindo a cor da borda de cada input, textarea ou fieldset inválido (no caso de grupos de checkbox e radio button) para red.

O que fazer:

Testes:

  • Você deve ter uma função chamada `validateForm`.
  • `validateForm` deve retornar um objeto.
  • `validateForm()["full-name"]` deve ser `false` quando `#full-name` estiver vazio, e `true` caso contrário.
  • Quando um evento `change` for acionado em `#full-name`, você deve definir a cor da borda para `green` se ele contiver um valor válido, e para `red` caso contrário.
  • `validateForm()["email"]` deve ser `true` quando `#email` contiver um endereço de e-mail válido, e `false` caso contrário.
  • Quando um evento `change` é acionado em `#email`, você deve definir a cor da borda para `green` se ele contiver um endereço de e-mail válido, e para `red` caso contrário.
  • `validateForm()["order-no"]` deve ser `true` quando `#order-no` contiver um valor válido, e `false` caso contrário.
  • Quando um evento `change` é acionado em `#order-no`, você deve definir a cor da borda para `green` se ele contiver um valor válido, e para `red` caso contrário.
  • `validateForm()["product-code"]` deve ser `true` quando `#product-code` contiver um valor válido, e `false` caso contrário.
  • Quando um evento `change` é acionado em `#product-code`, você deve definir a cor da borda para `green` se ele contiver um valor válido, e para `red` caso contrário.
  • `validateForm()["quantity"]` deve ser `true` quando `#quantity` contiver um valor válido, e `false` caso contrário.
  • Quando um evento `change` é acionado em `#quantity`, você deve definir a cor da borda para `green` se ele contiver um valor válido, e para `red` caso contrário.
  • Quando pelo menos uma caixa de seleção de `#complaints-group` estiver marcada, `validateForm()["complaints-group"]` deve ser `true`.
  • Quando nenhuma das caixas de seleção de `#complaints-group` estiver marcada, `validateForm()["complaints-group"]` deve ser `false`.
  • Uma vez que uma caixa de seleção de `#complaints-group` esteja marcada, você deve definir a cor da borda de `#complaints-group` para `green`.
  • Quando todas as caixas de seleção de `#complaints-group` forem alteradas para o estado desmarcado, você deve definir a cor da borda de `#complaints-group` para `red`.
  • Quando `#other-complaint` não estiver marcado, `validateForm()["complaint-description"]` deve ser `true`.
  • Quando `#other-complaint` estiver marcado e `#complaint-description` contiver pelo menos vinte caracteres, `validateForm()["complaint-description"]` deve ser `true`.
  • Quando `#other-complaint` estiver marcado e `#complaint-description` contiver menos de vinte caracteres, `validateForm()["complaint-description"]` deve ser `false`.
  • Quando `#other-complaint` estiver marcado e o valor de `#complaint-description` for alterado para um valor válido, você deve definir a cor da borda como `green`.
  • Quando `#other-complaint` estiver marcado e o valor de `#complaint-description` for alterado para um valor inválido, você deve definir a cor da borda como `red`.
  • Quando um botão de opção de `#solutions-group` estiver selecionado, `validateForm()["solutions-group"]` deve ser `true`.
  • Quando nenhum dos botões de opção de `#solutions-group` estiver selecionado, `validateForm()["solutions-group"]` deve ser `false`.
  • Uma vez que um botão de rádio de `#solutions-group` seja selecionado, você deve definir a cor da borda de `#solutions-group` para `green`.
  • Quando todos os botões de rádio de `#solutions-group` estiverem no estado desmarcado após um evento de alteração, você deve definir a cor da borda de `#solutions-group` para `red`.
  • Quando `#other-solution` não estiver marcado, `validateForm()["solution-description"]` deve ser `true`.
  • Quando `#other-solution` estiver marcado e `#solution-description` contiver pelo menos vinte caracteres, `validateForm()["solution-description"]` deve ser `true`.
  • Quando `#other-solution` estiver marcado e `#solution-description` contiver menos de vinte caracteres, `validateForm()["solution-description"]` deve ser `false`.
  • Quando `#other-solution` estiver marcado e o valor de `#solution-description` for alterado para um valor válido, você deve definir a cor da borda para `green`.
  • Quando `#other-solution` estiver marcado e o valor de `#solution-description` for alterado para um valor inválido, você deve definir a cor da borda como `red`.
  • Você deve ter uma função chamada `isValid`.
  • Sua função `isValid` deve receber a `validateForm()` como argumento e retornar `true` quando todos os campos do formulário estiverem preenchidos corretamente.
  • Sua função `isValid` deve receber a `validateForm()` como argumento e retornar `false` quando nem todos os campos do formulário tiverem sido preenchidos corretamente.
  • Você deve chamar `isValid` quando tentar enviar o formulário.

Preview