Jump to content

display:none não omite campo do formulário


Carlos Rocha
 Share

Recommended Posts

Primeiramente gostaria de dizer que fiquei em dúvida quanto ao fórum correto para postagem dessa dúvida. Então, caso não for aqui, peço ao moderador que envie duvida ao fórum correto fazendo favor!

Tenho um campo de formulário, um input type=text, ele esta dentro de uma div.

Acontece, que dependendo da situação não me importante que esse campo seja enviado junto com o $_POST.

Então, criei una função js que passa à div a qual o campo esta dentro, a condição de

display:none

Isso omite campo do formulário no Browser.

Mas na hora de enviar o formulário, o $_POST do php esta recebendo o campo omitido pela div.

O que fazer nesse caso?

Link to comment
Share on other sites

O display:none; apenas te esconde visualmente o teu elemento. Além disso, não vejo qual seja o uso de uma textbox escondida? A não ser que queiras fazer display da textbox quando o utilizador clicar num botão ou algo semelhante.

Mas se a textbox estiver vazia, o seu valor não está definido. Por isso, não estou a entender qual será realmente o teu problema.

Porque no fundo podes fazer:

if (empty($_POST['textbox'])){
 // A textbox tem valor
}
Edited by oxyzero
Link to comment
Share on other sites

Não poderei fazer:

if (isset($_POST['textbox']))
{
 // A textbox tem valor
}

Pois ainda que seja vazio, a $_POST['textbox']) sempre terá valor.

No meu caso é o seguinte:

Tenho um form com varias

<div>
 <input type="text' name="<?php echo $contador; ?>" />
</div>

Dependendo da situação, uma dessas textbox não será interessando e ela Não poderá ir junto com o $_POST.

Então, eu coloco ela dentro de uma DIV e chamo uma função Javascript que tornará em display:none a div e a textbox não mais aparcerá ao usuatio.

Mas preciso também destruir o campo textbox.

Da forma que estou fazendo, a textbox sempre esta indo.

Edited by carcleo
Link to comment
Share on other sites

Sim, não era usar a função isset, era a função empty. My bad 😛

Então, eu coloco ela dentro de uma DIV e chamo uma função Javascript que tornará em display:none a div e a textbox não mais aparcerá ao usuatio.

Mas preciso também destruir o campo textbox.

Da forma que estou fazendo, a textbox sempre esta indo.

Pelo que sei, tudo que tens dentro da form vai sempre ser enviado. Julgo que não exista nenhuma forma de dizer 'hey, este input não é enviado pelo método da form'..

Se realmente não queres que esse valor (mesmo que vazio) não passe, tens de simplesmente removê-lo. Tenta identificar com um id o input ou outra cena e elimina-o usando Javascript.

Caso não consigas, e quiseres desenrascar, podes fazer o que te disse em cima. Verificas se a textbox tem algum input válido, e fazes o que tens que fazer com esse valor. Caso o teu input tiver um nome dinâmico (pelo que vejo tens o name identificado com a variável $contador), podes sempre meter esse valor num input do tipo hidden e lês esse valor no $_POST.

Link to comment
Share on other sites

Tem jeito sim.

Consegui:

Veja. Com JS


function removerCampo2(campoPai,id) 
{ 
var objPai = document.getElementById(campoPai);
var objFilho = document.getElementById(id);

   objPai.appendChild(objFilho);
//Removendo o DIV com id específico do nó-pai:
   var removido = objPai.removeChild(objFilho);
}

Pego a div anterior e chamo ela de pai, pego a div atual chamo ela de filho e digo que a div filho é filha da div pai.

Então é só deletar ela com tudo dentro.

E aqui eu chamo o deletar.

<input type='button' onclick='removerCampo2(this.parentNode.parentNode.id,this.parentNode.id)' value='Apagar campo'> 

O que achas?

Pelo menos funcionou!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.