3
respostas

Problema em puxar campo de dropdown (lista de seleção)

Preciso de um help rs

Estou criando um forms usando a opção select e options. na hora de salvar as informações eu consigo, no meu banco de dados a informação foi salva corretamente.

O problema está na hora de puxar para editar. O campo vem em branco ou somente com a resposta da primeira option de forma generica. Também na hora de salvar em cima e voltar mantém a opção anterior, somente esse input não muda, meus outros inputs mudam.

Como posso fazer para buscar o resultado exato do select e edita-lo?

Segue abaixo meu código:

import { userService } from '../service/user-service.js'

const catchURL = new URL(window.location)

const id = catchURL.searchParams.get('id')

const inputName = document.querySelector('[data-nome]')
const inputRole = document.querySelector('[data-cargo]')
const inputEmail = document.querySelector('[data-email]')
const inputAreaSelect = document.querySelector('[data-area]')
const inputAreaOptions = inputAreaSelect.children[inputAreaSelect.selectedIndex];
const inputArea = inputAreaOptions.textContent;

// const inputAreaSelect = document.getElementById('area')
// const inputArea = inputAreaSelect.options[inputAreaSelect.selectedIndex].value;

userService.detailsUser(id)
.then( dados => { 
    inputName.value = dados.nome
    inputRole.value = dados.cargo
    inputEmail.value = dados.email
    inputArea = dados.area

})

const tableEdit= document.querySelector('[data-form]')


console.log(inputAreaOptions)

tableEdit.addEventListener('submit', (e) => {
    console.log(tableEdit)
    e.preventDefault()

    userService.updateUser(id, inputName.value, inputRole.value, inputEmail.value, inputArea.value)
    window.location.href = "../../components/actionSuccess-register.html"
})

Tentei assim também:

const inputName = document.querySelector('[data-nome]')
const inputRole = document.querySelector('[data-cargo]')
const inputEmail = document.querySelector('[data-email]')
const inputArea = document.querySelector('[data-area]')

Esse é o HTML, não sei se é ele que está com problema.


                    <div class="newUserArea">
                        <label>Área de atuação</label>
                        <select name="Área" class="areas" data-area id="area">
                            <option class="areaOptions" value="consultoria">Consultoria</option>
                            <option class="areaOptions" value="comercial">Comercial</option>
                            <option class="areaOptions" value="marketing">Marketing</option>
                            <option class="areaOptions" value="t-i">T.I</option>
                        </select>
                    </div>

Aqui meu json, com a info certa salva:

      "nome": "sadvfbg",
      "cargo": "sawdefg",
      "area": "Comercial",
      "email": "awdefgrt@wdfg.com",
      "id": 2

Está muito dificil trabalhar com o options, não deveria ser mais simples por ser um input padrão? hahahha

3 respostas

Fala ai Erica, tudo bem? Você precisa procurar todos os option e quando achar algum que tenha o value recebido pela aplicação na edição do registro você seta essa option com o atributo selected e também precisa definir o .value no select.

Espero ter ajudado.

Não entendi direito como realizar a execução de fato disso, poderia me ajudar?

Fala Erica, tudo poderia fazer algo assim:

<select class="dropdown">
  <option>Selecione uma opção</option>
  <option value="1">Primeira</option>
  <option value="2">Segunda</option>
  <option value="3">Terceira</option>
</select>
const valorDaApi = "1"
const dropdown = document.querySelector('.dropdown')
if (dropdown) {
    Array.from(dropdown.children).forEach(option => {
      if (option.value === valorDaApi) {
        option.selected = true
    }
  })
}

Espero ter ajudado.