Ir para conteúdo

Arquivado

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

Carcleo

Carregar um arquivo JS dentro de outro arquivo JS

Recommended Posts

Pessoal, boa tarde!


Tenho uma função addCampos(), que cria campos novos em um formulário após seu carregamento.

Na verdade, fiz uma adaptação(copiada) em .innerHtml para criar vários campos de uma vez:


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

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

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

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

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


qtdeCampos++;

}

Essa função esta funcionando corretamente.

O problema é que um dos campos criados, recebe uma função JQuery que formata campos tipo moeda.


Bom, o formulário, conforme imagem abaixo, possui um bloco de campos inicial (que carrega junto com o forme). E, a partir dele, pode se chamar a função addCampos() para gerar mais um bloco de campos.


Esse bloco que carrega inicialmente, é exatamente igual ao que será criado.


Isto é: possui um campo



Nome Tipo : texto livre

Qtde Pessoas : apenas números

Preço : função JQuery

Descrição texto livre,


Para o bloco que carrega junto com o formulario, tudo funciona bem. Mas com o bloco criado pela função addCampos(), apenas o campo Preço não recebe a função JQuery.

Veja abaixo:

aa.png

As chamadas aos arquivos JS esta sendo feito assim:



<link rel="stylesheet" type="text/css" href="../global/css/body_admin.css" /></link>
<link rel="stylesheet" type="text/css" href="../global/css/menu_admin.css" /></link>
<link rel="shortcut icon" type="image/x-icon" href="../img/favicon.ico" />
<script type="text/javascript" src="../global/funcoes_js/mascara.js"></script>
<script type="text/javascript" src="global/validacoes_js/valida_cad_empresas.js"></script>
<script type="text/javascript" src="global/funcoes_js/buscacidade.js"></script>
<script type="text/javascript" src="global/funcoes_js/bloqueia_letras.js"></script>
<script type="text/javascript" src="../global/funcoes_js/abre_fecha.js"></script>
<script type="text/javascript" src="../global/funcoes_js/jquery.js"></script>
<script type="text/javascript" src="../global/funcoes_js/jquery.maskMoney.js"></script>
<script type="text/javascript" src="../global/funcoes_js/mascara_moeda.js"></script>
<script type="text/javascript" src="../global/funcoes_js/variosInputs.js"></script>

Porque será essa falha? Como concertar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo:

 

<script type="text/javascript">
function include(file_path){
var j = document.createElement("script"); /* criando um elemento script: </script><script></script> */
j.type = "text/javascript"; /* informando o type como text/javacript: <script type="text/javascript"></script>*/
j.src = file_path; /* Inserindo um src com o valor do parâmetro file_path: <script type="javascript" src="+file_path+"></script>*/
document.body.appendChild(j); /* Inserindo o seu elemento(no caso o j) como filho(child) do  BODY: <html><body><script type="javascript" src="+file_path+"></script></body></html> */
}

//incluindo um arquivo com a função include()
include("arquivo.js");

function include_once(file_path) {
var sc = document.getElementsByTagName("script");
for (var x in sc)
if (sc[x].src != null &amp;amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp;amp; sc[x].src.indexOf(file_path) != -1) return;
include(file_path);
}
//incluindo um arquivo com a função include_once()
include_once("arquivo.js");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

 

Tentei assim e deu certo:

 

function actualizarMasks(){
  $(".dolar").maskMoney()
  $(".real").maskMoney({symbol:"R$",decimal:",",thousands:"."})
  $(".euro").maskMoney({symbol:"Euro",decimal:",",thousands:" "})
  $(".precision").maskMoney({decimal:",",thousands:" ",precision:3})
}
 
var qtdeCampos = 1;
 
 
 
function addCampos(campoPai,servico) 
{
  var objPai = document.getElementById(campoPai);
  
  //Criando o elemento DIV;  
  var objFilho = document.createElement("div");
  
  //Definindo atributos ao objFilho:
  objFilho.setAttribute("id","filho"+qtdeCampos);
  
  //Inserindo o elemento no pai:  
  objPai.appendChild(objFilho);
  
  //Escrevendo algo no filho recém-criado:
  document.getElementById("filho"+qtdeCampos).innerHTML = "<fieldset><legend>Tipo</legend><label class='passo2'>Nome Tipo</label> : <input type='text' id='nomeTipo["+servico+"]["+qtdeCampos+"]' name='nomeTipo["+servico+"]["+qtdeCampos+"]'><br /> <label class='passo2'>Qtde Pessoas</label> : <input type='text' onKeyPress='BloqueiaLetras();' id='qtdePessoas["+servico+"]["+qtdeCampos+"]' name='qtdePessoas["+servico+"]["+qtdeCampos+"]'><br /><label class='passo2'>Preço</label> : <input type='text' class='real' id='preco["+servico+"]["+qtdeCampos+"]' name='preco["+servico+"]["+qtdeCampos+"]'><label style='color:red'>formato: 100,00 (por favor! centavos com virgula)</label><br /><label class='passo2'>Descrição</label> : <textarea cols='40' rows='5' id='descricao["+servico+"]["+qtdeCampos+"]' name='descricao["+servico+"]["+qtdeCampos+"]'></textarea><br /></fieldset><input type='button' onclick='removerCampo(this.parentNode.parentNode.id,"+qtdeCampos+")' value='Apagar campo'>";
  
  
  qtdeCampos++;
 
  actualizarMasks(); // A função só é chamada no fim
 
}
 

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.