Ir para conteúdo
Fórum Script Brasil
  • 0

[AJUDA] Galera, como faço pra chamar uma função via DOM?


LeoMoura

Pergunta

É o seguinte;

Eu tenho 3 textfiel que somam valores e exibem num quarto TEXTFIELD. As funções em JAVASCRIPT funcionam perfeitamente!

O problema é que agora eu criei um botão pra inserir nomes, então cada vez que o botão é clicado, eu gero um SELECT e os mesmos TEXTFIELDS que citei acima por meio de DOM. Só que quando faço isso, os dito cujos não chamam mais as funções que fazem a formatação dos valores.

Segue o Código.

<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>&lt;script type="text/javascript">

function maskIt(w,e,m,r,a){
    
    // Cancela se o evento for Backspace
    if (!e) var e = window.event
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    
    // Variáveis da função
    var txt  = (!r) ? w.value.replace(/[^\d]+/gi,'') : w.value.replace(/[^\d]+/gi,'').reverse();
    var mask = (!r) ? m : m.reverse();
    var pre  = (a ) ? a.pre : "";
    var pos  = (a ) ? a.pos : "";
    var ret  = "";

    if(code == 9 || code == 8 || txt.length == mask.replace(/[^#]+/g,'').length) return false;

    // Loop na máscara para aplicar os caracteres
    for(var x=0,y=0, z=mask.length;x<z && y<txt.length;){
        if(mask.charAt(x)!='#'){
            ret += mask.charAt(x); x++;
        } else{
            ret += txt.charAt(y); y++; x++;
        }
    }
    
    // Retorno da função
    ret = (!r) ? ret : ret.reverse()    
    w.value = pre+ret+pos;
}

// Novo método para o objeto 'String'
String.prototype.reverse = function(){
    return this.split('').reverse().join('');
};

function teclas(event){
if(((event.keyCode < 96) || (event.keyCode > 105)) && ((event.keyCode < 48) || (event.keyCode > 57)) ) {
campo.value = campo.value.replace(String.fromCharCode(event.keyCode).toLowerCase(),"");
}
}
function numMoeda(event,campo){
teclas(campo);
str = campo.value;
while(str.search(",") != -1)
str = str.replace(",","");
i = 0;
while(i< str.length){
if(str.substr(i,1) == ".")
str = str.replace(".","");
i++;
}
part1 = str.substr(0,str.length - 2);
while(part1.search(" ") != -1)
part1 = part1.replace(" ","");
part2 = str.substr(str.length - 2,2);
res = "";
i = part1.length;
sob = i % 3;
if((sob != 0) && (i > 2))
res = part1.substr(0,sob) + ".";
else
res = part1.substr(0,sob);
j = 1;
part1 = part1.substr(sob);
i = 0;
while(i < part1.length){
if(j == 3){
if(i + 1 == part1.length)
res = res + part1.substr(i-2,3);
else res = res + part1.substr(i-2,3) + ".";
}
i++;
j = j<3?j+1:1;
}
campo.value = res + "," + part2;
}


function soma() {

campo1 = document.form1.diarias.value;
campo1 = campo1.replace(/[.]/g, "");
campo1 = campo1.replace(/[,]/g, "");

campo2 = document.form1.passagens.value;
campo2 = campo2.replace(/[.]/g, "");
campo2 = campo2.replace(/[,]/g, "");

campo3 = document.form1.inscricao.value;
campo3 = campo3.replace(/[.]/g, "");
campo3 = campo3.replace(/[,]/g, "");

if(campo1!="" && campo2!="" && campo3!="") {
total = parseFloat(campo1)+parseFloat(campo2)+parseFloat(campo3);
document.form1.total.value=parseFloat(total);
}

}

x = 1;
function criaDiv()
    {
    var campo;
    campo="<select name='participante["+x+"]' id='participante'>";
    <?php
     $sql_alunos = mysql_query("SELECT * FROM aluno ORDER BY nomeAluno");
      $reg_aluno = mysql_num_rows($sql_alunos);
      
      for($f=0;$f<$reg_aluno;$f++){
          $nome_aluno = mysql_result($sql_alunos,$f,'nomeAluno');
          $cpf = mysql_result($sql_alunos,$f,'cpfAluno');
          $id_aluno = mysql_result($sql_alunos,$f,'idAluno');
    ?>
        campo += "<option value='<?php echo $id_aluno;?>'><?php echo $nome_aluno; ?>    -   <?php echo $cpf; ?></option>";
        <?php } ?>
        campo += "</select>";
        campo += "<input name='diarias["+x+"]' type='text' id='diarias' onkeyup='soma();numMoeda(event,this);' size='12' value=''/>";
        campo += "<input name='passagens["+x+"]' type='text' id='passagens' onkeyup='soma();numMoeda(event,this);' size='12' value=''/>";
        campo += "<input name='inscricao["+x+"]' type='text' id='inscricao' onkeyup='soma();numMoeda(event,this);' size='12' value=''/>";
        campo += "<input name='total["+x+"]' type='text' id='diarias' onkeyup='soma();numMoeda(event,this);' size='12' value=''/>";
        
        novaDiv = document.createElement("div");
        novaDiv.setAttribute("className","formato");
        novaDiv.setAttribute("class","formato");
        local = document.getElementById("itens");
        local.appendChild(novaDiv).innerHTML = campo;
        x = x + 1; //Incremento
    }
    

</script>

Só pra informação, os campos são exibidos corretamente na DIV, apenas as funções não estão sendo chamadas.

Editado por fercosmig
add tag's
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...