4

Estou tentando fazer com que meu select fique vazio após o select anterior ser modificado. (Visto que os dois são interligados, onde o select1 é estado e conforme o estado é liberado as cidades no select2

Código HTML onde a pessoa seleciona o estado, após selecionado estado retorna as cidades do estado selecionado, e possui o botão buscar para buscar itens presentes na respectiva cidade.

<div class="row rol-inp">
                    <div class="row input-form">
                    <div id="slct-estado">
                            <span class="blt"></span>
                            <select id="selectEstado" name="estado" onchange="javascript: getCitiesFromState(this.value)">
                                <option value="">Estado </option>
                                <?php foreach ($estados as $est) { ?>
                                <option value="<?php echo $est->UF; ?>"> <?php echo $est->UF; ?> </option>
                                <?php } ?>
                            </select>
                    </div>
                    </div>

                    <div class="row input-form">
                    <div id="slct-estado">
                            <span class="blt"></span>
                            <select id="cidadesSelect" name="cidades">
                                <option value=""> Cidade </option>
                            </select>
                    </div>
                    </div>

                    <div class="row borda">
                    <a onclick="getStoresFromCity(this.value)" class="bt-concluir"><strong>Encontrar</strong></a>    
                    </div>  
                </div>

Abaixo, código que pega as cidades conforme estado, que já possue value="", mas não está funcionando.

 function getCitiesFromState(estado) {

    document.querySelector('select[name=cities]').value="";

    $.ajax({
        url: ROOT + LANG + "/facebook/getCitiesFromState",
        dataType: "html",
        type: 'POST',
        data: {
            estado: estado
        },
        success: function (html) {
            $("#cidadesSelect").html(html);
        }

    });

}
2
  • Como assim vazio? Você quer impedir que o usuário troque o estado depois que ele for selecionado? Commented 22/02/2019 às 17:49
  • Vc acha que seu problema tem a ver com PHP ou Java? Por que está usando essas tags?
    – Sam
    Commented 25/02/2019 às 13:10

2 Respostas 2

2

Em vez de usar o seletor select[name=cities], use o mesmo seletor do id do select que está usando para preenchê-lo, que é #cidadesSelect.

Você pode fazer de duas formas:

JavaScript puro:

document.querySelector('#cidadesSelect').innerHTML = '';
ou
document.getElementById('cidadesSelect').innerHTML = '';

jQuery:

$('#cidadesSelect').empty();
ou
$('#cidadesSelect').html('');
ou
$('#cidadesSelect option').remove();
12
  • Não deu certo nenhuma das soluções. Commented 22/02/2019 às 19:10
  • Mas o Ajax tá funcionando normal?
    – Sam
    Commented 22/02/2019 às 19:17
  • Em vez de usar select[name=cities], use #cidadesSelect
    – Sam
    Commented 22/02/2019 às 19:34
  • Sim, funciona normal Commented 22/02/2019 às 19:56
  • #cidadesSelect também não funcionou irmão. Commented 22/02/2019 às 19:56
0

Testa assim:

$('#seuSelect').empty();

*Obs: Use o jQuery

3
  • Tentei e não funcionou também. Commented 22/02/2019 às 19:56
  • Oi Gabriel! Podes explicar porquê o "Use o jQuery"? Eu tenho opinião contrária, o jQuery neste caso é tiro de canhão para apanhar um pássaro.
    – Sergio
    Commented 23/02/2019 às 4:48
  • Desculpe, eu ia escrever 'usei o jQuery' e faltou o 'i'. Faça como achar melhor, o importante é funcionar bem ;) Commented 11/03/2019 às 17:13

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .