Jump to content

Recommended Posts

Posted (edited)

Pessoal, bom dia!

Adaptei uma função para criar campos dinâmicos em Javascript.

Acontece que a função realmente cria os campos, a função de validação (feita com ajuda do pessoal aqui do fórum) desses novos campos funciona. Mas ocorre um erro~(intermitente) que não sei se é do Javascript ou do php:

No form esta assim:

<?php
if ($pesquisaServicoTipoQuery->num_rows>0)
{
 $contador=0;
 while(list(
$id,
$empresasservicos,
$tipo,
$pessoas,
$preco,
$descricao)=$pesquisaServicoTipoQuery->fetch_row())
{
$preco = formata_moeda($preco);
?>
<div id="div[<?php echo $servico;?>][<?php echo $id;?>]">
 <fieldset style="width:650px">
<legend>Tipo</legend>
<label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo<?php echo $servico;?>[<?php echo $contador;?>]' name='nomeTipo[<?php echo $servico;?>][<?php echo $contador;?>]' value="<?php echo $tipo;?>" /><br /> 
<label class='passo2'>Qtde Pessoas</label> : <input type='text' onkeypress="BloqueiaLetras();" id='qtdePessoas<?php echo $servico;?>[<?php echo $contador;?>]' name='qtdePessoas[<?php echo $servico;?>][<?php echo $contador;?>]' value="<?php echo $pessoas;?>" /><br /> 
<label class='passo2'>Preço</label> : <input type='text' class="real" id='preco<?php echo $servico;?>[<?php echo $contador;?>]' name='preco[<?php echo $servico;?>][<?php echo $contador;?>]' value="<?php echo $preco;?>" /><br /> 
<label class='passo2'>Descrição</label> : <textarea id='descricao<?php echo $servico;?>[<?php echo $contador;?>]' name='descricao[<?php echo $servico;?>][<?php echo $contador;?>]' 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
$contador++;
}
?>

<script>var qtdeCamposForm=<?php echo $contador+1;?>;</script>

<div id="div<?php echo $servico;?>"><input type="button" value="Adicionar campos" onclick="addCampos3(<?php echo $contador;?>, this.parentNode.id, <?php echo $servico;?>)" />
 </div><br><br>
<?php 
 }

}
?>

Uma variável $contador que implementa quantos campos já foram criados pelo formulário para que o próximo campo, o primeiro a ser criado pela função addCampos3, comece pelo id no valor do $contador.

Mas não estou sabendo como implementar isso.

Eis a função Javascript:

function addCampos3(campoPai,empresa, servico)
{
 var objPai = document.getElementById(campoPai);

 //Criando o elemento DIV;  
 var objFilho = document.createElement("div");

 //Definindo atributos ao objFilho:
 objFilho.setAttribute("id","filho"+empresa+qtdeCamposForm);

 //Inserindo o elemento no pai:  
 objPai.appendChild(objFilho);

 //Escrevendo algo no filho recém-criado:
 document.getElementById("filho"+empresa+qtdeCamposForm).innerHTML = "<fieldset><legend>Tipo</legend><label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo"+empresa+servico+"["+qtdeCamposForm+"]"+"' name='nomeTipo["+servico+"]["+qtdeCamposForm+"]'><br /> <label class='passo2'>Qtde Pessoas</label> : <input type='text' onkeypress='BloqueiaLetras();' id='qtdePessoas"+empresa+servico+"["+qtdeCamposForm+"]"+"' name='qtdePessoas["+servico+"]["+qtdeCamposForm+"]'><br /><label class='passo2'>Preço</label> : <input type='text' class='real' id='preco"+empresa+servico+"["+qtdeCamposForm+"]"+"' name='preco["+servico+"]["+qtdeCamposForm+"]'><label style='color:red'></label><br /><label class='passo2'>Descrição</label> : <textarea cols='40' rows='5' id='descricao"+empresa+servico+"["+qtdeCamposForm+"]"+"' name='descricao["+servico+"]["+qtdeCamposForm+"]'></textarea><br /></fieldset><input type='button' onclick='removerCampo(this.parentNode.parentNode.id,"+qtdeCamposForm+")' value='Apagar campo'>";



  $("#preco"+empresa+servico+"["+qtdeCamposForm+"]"+"").maskMoney({symbol:"R$",decimal:",",thousands:"."})

 qtdeCamposForm++;

}

O erro é o seguinte:

Existe no form uma declaração de uma variavel:

var qtdeCamposForm=<?php echo $contador+1;?>;

Que não pode ser declarada no arquivo JS pois esta em um loop e para cada fim de loop o valor de $contador é diferente.

Como faço para entregar esse valor ao arquivo js?

Tentei da forma acima mas não funcionou.

Edited by carcleo
Posted

E porque é que não crias uma variável em javascript que te retenha o valor da variável em PHP sem aceder directamente a ela?

var qtdCamposForm = 0;
function update_var(valor){
 qtdCamposForm = valor;
}

$contador = 3;
echo "<input type='submit' name='ok' value='go' onclick='update_var(" . $contador . ")'/>";

Algo dentro deste género.

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
×
×
  • 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.