Ir para conteúdo
iguulima

Como suspender o parâmetro $_GET se o select estiver vazio?

Recommended Posts

Rapaziada gostaria de saber se existe alguma forma de não passar  os valores de um formulário usando GET para a URL caso o Select e Input esteja com valor vazio? Alguma função em JS ou PHP? muito Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim daria, no entanto o formulário deve ser totalmente manipulado por script.

Aconselho que use o protocolo POST e apenas valide os dados pelo backend, se for vazio você não precisa manipular.

 

Mas podemos redirecionar informando na url só aquilo que não estiver vazio no formulário.

<form method="GET" action="" onsubmit="return funcaoExemplo(this)">

    <input type="text" name="caixa_de_texto" placeholder="Digite algo se quiser" />

    <select name="caixa_de_selecao">
        <option value="">Selecione se quiser</option>
        <option value="opção 1">Primeira opção</option>
        <option value="opção 2">Segunda opção</option>
    </select>

    <button type="submit">Enviar formulário por GET</button>
</form>

<script>
    const URL_DESTINO = 'https://endereco/arquivo.php';
    
    function funcaoExemplo(formulario) {
        var parametros = '?';
        for (var i = 0; i < formulario.elements.length; i++) {
            if (formulario.elements[i].value != '') {
                parametros += (parametros.length !== 1 ? '&' : '') + formulario.elements[i].name + '=' + codificarURL(formulario.elements[i].value);
            }
        }
        if (parametros.length > 1) {
            window.location.href = URL_DESTINO + parametros;
        }
        return (false);
    }
    
    function codificarURL(str) {
        return (encodeURIComponent(str).replace(/['()]/g, escape).replace(/\*/g, '%2A').replace(/%(?:7C|60|5E)/g, unescape));
    }
</script>

 

De qualquer forma você terá que validar tudo antes de executar, por isso aconselho mesmo usar o POST e evitar manobras e artimanhas para algo desnecessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.