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><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.
Pergunta
LeoMoura
É 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.
Só pra informação, os campos são exibidos corretamente na DIV, apenas as funções não estão sendo chamadas.
Editado por fercosmigadd tag's
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.