Carlos Rocha Posted February 10, 2014 at 09:55 AM Report #544616 Posted February 10, 2014 at 09:55 AM (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 February 10, 2014 at 12:37 PM by carcleo
bioshock Posted February 10, 2014 at 03:09 PM Report #544649 Posted February 10, 2014 at 03:09 PM 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.
Carlos Rocha Posted February 10, 2014 at 03:32 PM Author Report #544653 Posted February 10, 2014 at 03:32 PM Encontrei! Obrigado pelo retorno O problema estava no php. Não no Javascript. Obrigado!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now