Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

POST não submete campo criado depois

Recommended Posts

Pessoal.

Tenho um formulário com campos dinãmicos que, ao ser rodao o loop, gera o html abaixo

............

  <div id="div40">
     <fieldset style="width:650px">
      <legend>Tipo</legend>
      <label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo40' name='nomeTipo[4][0]' value="AP" /><br />
      <label class='passo2'>Qtde Pessoas</label> : <input type='text' onkeypress="BloqueiaLetras();" id='qtdePessoas40' name='qtdePessoas[4][0]' value="2" /><br />
      <label class='passo2'>Preço</label> : <input type='text' class="real" id='preco40' name='preco[4][0]' value="80,00" /><br />
      <label class='passo2'>Descrição</label> : <textarea id='descricao40' name='descricao[4][0]' cols='40' rows='5'>AP</textarea><br />
    </fieldset>
    <input type='button' onclick='fecha(this.parentNode.id)' value='Apagar campo'><br><br>
  </div>

  <div id="div41">
     <fieldset style="width:650px">
      <legend>Tipo</legend>
      <label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo41' name='nomeTipo[4][1]' value="SUITE" /><br />
      <label class='passo2'>Qtde Pessoas</label> : <input type='text' onkeypress="BloqueiaLetras();" id='qtdePessoas41' name='qtdePessoas[4][1]' value="3" /><br />
      <label class='passo2'>Preço</label> : <input type='text' class="real" id='preco41' name='preco[4][1]' value="140,00" /><br />
      <label class='passo2'>Descrição</label> : <textarea id='descricao41' name='descricao[4][1]' cols='40' rows='5'>SUITE</textarea><br />
    </fieldset>
    <input type='button' onclick='fecha(this.parentNode.id)' value='Apagar campo'><br><br>
  </div>

  <script>var qtdeCamposForm=2;</script>
  <div id="div4"><input type="button" value="Adicionar campos" onclick="addCampos3(this.parentNode.id, 4)" />
  </div><br><br>

  <br><br><input type="button" value="Enviar" onclick="valida_envia_empresa(this.form)" />
</form>

Note que existe uma separação entre as div's <div id="div40"> e <div id="div41">
Acontece que eu tenho um script que gera bloco de div's como estas com seus devidos campos dentro.
Quando eu clicko em Adicionar Campos, os campos realmente são criados.
Como por exemplo:
3.png
Essa, é a tela de deputação do chrome.
Mas, quando mando exibir o código fonte, o campo não aparece. Igual esta no bloco de código acima.
Veja no próprio browser;
1.png
Mas quando submete o formulário, eu não recebo via POST, todos os blocos. Só estou recebendo 2 (dei um print_r para ver).
<?php
if(isset($_GET["acao"]) and $_GET["acao"]=="cadPreco")
{
print "<pre>";
print_r($_POST);
print "</pre>";

Array
(
    [diferenciais_alt_empresas] => Array
        (
            [4] => Os mais diversos apartamentos
        )

    [inclusos_alt_empresas] => Array
        (
            [4] => Ar Condicionado
        )

    [pgto_alt_empresas] => Array
        (
            [4] => Vista Prazo
        )

    [taxa_alt_empresas] => Array
        (
            [4] => n
        )

    [taxaValor_alt_empresas] => Array
        (
            [4] => 0,00
        )

    [observa_alt_empresas] => Array
        (
            [4] => Nada
        )

    [nomeTipo] => Array
        (
            [4] => Array
                (
                    [0] => AP
                    [1] => SUITE
                )

        )

    [qtdePessoas] => Array
        (
            [4] => Array
                (
                    [0] => 2
                    [1] => 3
                )

        )

    [preco] => Array
        (
            [4] => Array
                (
                    [0] => 80,00
                    [1] => 140,00
                )

        )

    [descricao] => Array
        (
            [4] => Array
                (
                    [0] => AP
                    [1] => SUITE
                )

        )

)

Como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código completo:
Eles esta(pelo menos a criação está) dentro do form.
Onde será que esta o erro:

  <form action="?acao=cadPreco&empresa=<?php echo $_GET["empresa"]; ?>&cotacao=<?php echo $_GET["cotacao"]; ?>"  method="post" name="gravatipos" id="gravatipos">
<tr><td colspan="2" align="center">========================</td></tr>
    <tr><td>

<?php
foreach($servicos as $servicoID)
{
$nomeServicoString="SELECT nome FROM servicos WHERE id=".$servicoID;
$nomeServicoQuery=$conexao->Query($nomeServicoString);
list($servicoNome)=$nomeServicoQuery->fetch_row();  

$pesquisaServicoString="SELECT id, diferenciais, inclusos, pgto, taxa, taxaValor, observacao
FROM empresasservicos
WHERE empresa=".$_GET["empresa"]." and servico=".$servicoID;
$pesquisaServicoQuery=$conexao->Query($pesquisaServicoString);
if ($pesquisaServicoQuery->num_rows>0)
{
list($servicoTipo, $diferenciais, $inclusos, $pgto, $taxa, $taxaValor, $observacao)=$pesquisaServicoQuery->fetch_row();
if($taxa=="s")
{
$taxaValor=formata_moeda($taxaValor);
}
else
{
$taxaValor='0,00';
}
echo "<h2><label>Opções de ".$servicoNome." ao cliente:</label></h2><br />";
?>
<label  class='passo2'>Diferenciais</label> : <textarea name="diferenciais_alt_empresas[<?php echo $servicoID;?>]" id="diferenciais_alt_empresas<?php echo $servicoID;?>" cols="50" rows="2"><?php echo nl2br($diferenciais);?></textarea><br />

<label  class='passo2'>Inclusos</label> : <textarea name="inclusos_alt_empresas[<?php echo $servicoID;?>]" id="inclusos_alt_empresas<?php echo $servicoID;?>" cols="50" rows="2"><?php echo nl2br($inclusos);?></textarea><br />

<label  class='passo2'>Formas de Pagamento</label> : <textarea name="pgto_alt_empresas[<?php echo $servicoID;?>]" id="pgto_alt_empresas<?php echo $servicoID;?>" cols="50" rows="2"><?php echo $pgto; ?></textarea><br /><br />

<label  class='passo2'>Taxa de Serviço?</label> : <input type="radio" name="taxa_alt_empresas[<?php echo $servicoID;?>]" id="taxa_alt_empresass<?php echo $servicoID;?>" value="s" onclick="abre('taxa[<?php echo $servicoID;?>]')" /> Sim      <input type="radio" name="taxa_alt_empresas[<?php echo $servicoID;?>]" id="taxa_alt_empresasn<?php echo $servicoID;?>" checked="checked" value="n"  onclick="fecha('taxa[<?php echo $servicoID;?>]')" /> Não<br />

<div id="taxa<?php echo $servicoID;?>" style="display:none">
<label  class='passo2'>Valor </label> : <input type="text" name="taxaValor_alt_empresas[<?php echo $servicoID;?>]" id="taxaValor_alt_empresas<?php echo $servicoID;?>" value="<?php echo $taxaValor;?>" class="real"/>
</div><br />

<label  class='passo2'>Observação </label> : <textarea name="observa_alt_empresas[<?php echo $servicoID;?>]" id="observa_alt_empresas<?php echo $servicoID;?>"  cols="50" rows="2"><?php echo nl2br($observacao);?></textarea><br /><br />
<?php
if($taxa=="s")
{
echo "<script>document.getElementById('taxa_alt_empresass".$servico."').checked=true;</script>";
echo "<script>document.getElementById('taxa[".$servico."]').style.display = 'block';</script>";
}
else
{
echo "<script>document.getElementById('taxa_alt_empresasn".$servico."').checked=true;</script>";
}

$pesquisaServicoTipoString="SELECT id,empresasservicos,tipo,pessoas,preco,descricao
FROM empresasservicostipos
WHERE empresasservicos=".$servicoTipo;

$pesquisaServicoTipoQuery=$conexao->Query($pesquisaServicoTipoString);

if ($pesquisaServicoTipoQuery->num_rows>0)
{
$contaId=0;

while(list(
$id,
$empresasservicos,
$tipo,
$pessoas,
$preco,
$descricao)=$pesquisaServicoTipoQuery->fetch_row())
{
$preco = formata_moeda($preco);
?>
<div id="div<?php echo $servicoID;?><?php echo $contaId;?>">
  <fieldset style="width:650px">
<legend>Tipo</legend>
<label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo<?php echo $servicoID;?><?php echo $contaId;?>' name='nomeTipo[<?php echo $servicoID;?>][<?php echo $contaId;?>]' value="<?php echo $tipo;?>" /><br />
<label class='passo2'>Qtde Pessoas</label> : <input type='text' onkeypress="BloqueiaLetras();" id='qtdePessoas<?php echo $servicoID;?><?php echo $contaId;?>' name='qtdePessoas[<?php echo $servicoID;?>][<?php echo $contaId;?>]' value="<?php echo $pessoas;?>" /><br />
<label class='passo2'>Preço</label> : <input type='text' class="real" id='preco<?php echo $servicoID;?><?php echo $contaId;?>' name='preco[<?php echo $servicoID;?>][<?php echo $contaId;?>]' value="<?php echo $preco;?>" /><br />
<label class='passo2'>Descrição</label> : <textarea id='descricao<?php echo $servicoID;?><?php echo $contaId;?>' name='descricao[<?php echo $servicoID;?>][<?php echo $contaId;?>]' cols='40' rows='5'><?php echo nl2br($descricao);?></textarea><br />
</fieldset>
<input type='button' onclick='fecha(this.parentNode.id)' value='Apagar campo'>                          <br><br>
</div>
<?php
$contaId++;
}
?>
<script>var qtdeCamposForm=<?php echo $contaId;?>;</script>
<div id="div<?php echo $servicoID;?>"><input type="button" value="Adicionar campos" onclick="addCampos3(this.parentNode.id, <?php echo $servicoID;?>)" />
</div><br><br>
<?php
         }
else
{
echo "<h2><label>Tipos para o serviço: ".$servicoNome."</label></h2><br />";
  ?>
<div id="div<?php echo $servicoID;?>"><input type="button" value="Adicionar campos" onclick="addCampos(this.parentNode.id, <?php echo $servicoID;?>)" />
</div><br><br>
<div id="div<?php echo $servicoID;?>0">
<fieldset style="width:650px">
<legend>Tipo</legend>
<label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo<?php echo $servicoID;?>0' name='nomeTipo[<?php echo $servicoID;?>][0]'><br />
<label class='passo2'>Qtde Pessoas</label> : <input type='text' onkeypress="BloqueiaLetras();" id='qtdePessoas<?php echo $servicoID;?>0' name='qtdePessoas[<?php echo $servicoID;?>][0]'><br />
<label class='passo2'>Preço</label> : <input type='text' class="real" id='preco<?php echo $servicoID;?>0' name='preco[<?php echo $servicoID;?>][0]'><br />
<label class='passo2'>Descrição</label> : <textarea id='descricao<?php echo $servicoID;?>0' name='descricao[<?php echo $servicoID;?>][0]' cols='40' rows='5'></textarea><br />
</fieldset>
<input type='button' onclick='fecha(this.parentNode.id)' value='Apagar campo'>              
<br><br>
</div>
  <?php
}

}
else
{
echo "<h2><label>Tipos para o serviço: ".$servicoNome."</label></h2><br />";
include("../admin/camposAdicionais.php");
?>
<div id="div<?php echo $servicoID;?>"><input type="button" value="Adicionar campos" onclick="addCampos(this.parentNode.id, <?php echo $servicoID;?>)" />
</div><br><br>
<div id="div<?php echo $servicoID;?>0">
  <fieldset style="width:650px">
<legend>Tipo</legend>
<label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo<?php echo $servicoID;?>0' name='nomeTipo[<?php echo $servicoID;?>][0]'><br />
<label class='passo2'>Qtde Pessoas</label> : <input type='text' onkeypress="BloqueiaLetras();" id='qtdePessoas<?php echo $servicoID;?>0' name='qtdePessoas[<?php echo $servicoID;?>][0]'><br />
<label class='passo2'>Preço</label> : <input type='text' class="real" id='preco<?php echo $servicoID;?>0' name='preco[<?php echo $servicoID;?>][0]'><br />
<label class='passo2'>Descrição</label> : <textarea id='descricao<?php echo $servicoID;?>0' name='descricao[<?php echo $servicoID;?>][0]' cols='40' rows='5'></textarea><br />
</fieldset>
<input type='button' onclick='fecha(this.parentNode.id)' value='Apagar campo'>              
<br><br>
</div>
<?php
}
}
?>
<br><br><input type="button" value="Enviar" onclick="valida_envia_empresa(this.form)" />
</form>
</td></tr></table>
<?php
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando jquery, invoque o método append() ao referido ponto onde deseja adicionar o objeto.

 

 

exemplo escopo

 

 

$("#bar").last().append('<input type="text" value="foo">');

 

<div id="bar"></div>

 

 

o equivalente em "puro js", é appendChild()..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta dando erro aqui:

 

 

<div id="bar"></div>
<script>$("#bar").last().append('<input type="text" value="foo">')</script> <<aqui
Se quiser ver o funcionamento:
E aproveita e vê o que o depurador fez com a linha do form:
Não existe aquele fechamento do meu form ali não.
4.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela existe sim. Mas esta fechada.

 

Achei o erro: Era disposição dos elementos html no documento

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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