Ir para conteúdo

POWERED BY:

Arquivado

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

andersonleme

[Resolvido] Jquery

Recommended Posts

estou desenvolvento um codigo Jquery onde crio elementos dinamicamente:

o trecho é esse

$("#add").click(function(){
		var input = '<div class="itens">';
		input += '<input type="text" name="data"  style="width:75px" value="" class="campos_formulario" /><br />';
		input += '<input type="text" name="valor" style="width:300px"  id="valores" value="" class="campos_formulario" /><br />';
		input += '<a href="#" class="del">x</a></div>';
		$("#campos").append(input);
		return false;
	});
	$('.del').live('click', function(){
		$(this).parent().remove();			
		});

 

usei o metodo live para eliminalos e funciona corretamente

o caso é que tenho uma mascara:

$(function() {
$("[id^=valor]").maskMoney({symbol:"",decimal:",",thousands:"."});
});

 

gostaria de saber se tem como eu usar o metodo live() nessa mascara para que os elementos criados tambam funcionaem com a mascara.

obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não precisa do live.

 

assim que você fizer o append(), varra o DOM que você acabou de criar, e dê um bind() da máscara

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tentei usar assim

$(function() {  

$("[id^=valor]").live('click', function(){  
$(this).maskMoney({symbol:'',decimal:',',thousands:'.'});  

})  

});

 

 

e tbm assim

$(function() {  

$("[id^=valor]").bind('click', function(){  
$(this).maskMoney({symbol:'',decimal:',',thousands:'.'});  

})  

});

 

só que o que acontece é que cada vez que entro no campo ele cria uma nova mascara 0,00 e se eu digito um numero ele toma o lugar de tres numeros

ex: 1,11 quando eu digito um e se eu sair e voltar no campo ele fica assim 1,11 0,00

creio que nao esta funcionando como mascara esta incluindo os valores dentro do input

se puder me ajudar =D

obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw william ja resolvi fiz a mascara com last para sómente o elemento criado dinamicamente rodar

 

Anderson, pode explicar o que fez exatamente? Estou precisando fazer a mesma coisa, mas mesmo com bind os inputs criados dinamicamente nao receberam a mascara, com efeito duplicado ou sem, nao aplicou a mask.

 

William, como assim varrer o DOM? Segue trecho de codigo pra esclarecer o que estou fazendo e o que preciso fazer.

 

function exibe_sol_proj_sub(nivelD){

   idSub = "subitem"+nivelD+"_"+iCountSub[nivelD];
   campos = "camposSub"+nivelD;

   var tb = document.createElement("table");
   tb.setAttribute("id",idSub);
   tb.setAttribute("class","padrao2");

   var tbdy = document.createElement("tbody");

   var tr1 = document.createElement("tr");

   var td1 = document.createElement("td");
   td1.setAttribute("class", "sub");

   var td2 = document.createElement("td");
   td2.setAttribute("class", "sub");

   var td3 = document.createElement("td");
   td3.setAttribute("class", "sub");

   var input1 = document.createElement("input");
   input1.setAttribute("type","text");
   input1.setAttribute("name","descSub"+nivelD+"_"+iCountSub[nivelD]);
   input1.setAttribute("class","descricao");

   var input2 = document.createElement("input");
   input2.setAttribute("type","text");
   input2.setAttribute("name","valorSub"+nivelD+"_"+iCountSub[nivelD]);
   input2.setAttribute("class","valor");

   var button1 = document.createElement("input");
   button1.setAttribute("type","button");
   button1.setAttribute("name","removeSub"+nivelD+"_"+iCountSub[nivelD]);
   button1.setAttribute("class", "remove");
   button1.setAttribute("value","     ");
   button1.setAttribute("onclick", "removeSub("+nivelD+","+iCountSub[nivelD]+")");

   td1.appendChild(input1);
   td2.appendChild(input2);
   td3.appendChild(button1);

   tr1.appendChild(td1);
   tr1.appendChild(td2);      
   tr1.appendChild(td3);      

   tbdy.appendChild(tr1);

   tb.appendChild(tbdy);

   camposTexto = document.getElementById("camposSub"+nivelD);
   camposTexto.appendChild(tb);

   if(navigator.appName=="Microsoft Internet Explorer")
       document.getElementById(campos).innerHTML = camposTexto.innerHTML;
   else
       document.getElementById(campos).appendChild(camposTexto.innerHTML);

   ++iCountSub[nivelD];
}

jQuery(function($){
   $(".mask-data").mask("99/99/9999");
   $(".valor").maskMoney({ symbol:"", decimal:",", thousands:"." });
});

 

Quero aplicar a mascara maskMoney a todos os elementos de class == valor. Estou comecando em JS, entao nao entendi muito bem o que devo fazer. Podem me esclarecer? Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, consegui aplicar a mask, mas duplicando os valores, triplicando, etc. Tentei fazer o seguinte, mas não aplicou a mask, e testei em browsers diferentes.

 

    
   var input2 = document.createElement("input");
   input2.setAttribute("type","text");
   input2.setAttribute("name","valorSub"+nivelD+"_"+iCountSub[nivelD]);
   input2.setAttribute("class","valor");
   input2.setAttribute("id", "valores")

   var button1 = document.createElement("input");
   button1.setAttribute("type","button");
   button1.setAttribute("name","removeSub"+nivelD+"_"+iCountSub[nivelD]);
   button1.setAttribute("class", "remove");
   button1.setAttribute("value","     ");

   td1.appendChild(input1);
   td2.appendChild(input2);
   td3.appendChild(button1);

   tr1.appendChild(td1);
   tr1.appendChild(td2);      
   tr1.appendChild(td3);      

   tbdy.appendChild(tr1);

   tb.appendChild(tbdy);

   $("[id^=valores]:last").maskMoney({symbol:'',decimal:',',thousands:'.'});

 

Help.

 

Consegui resolver. Mas nao com last. Criei um id unico para cada campo com valor monetario e usei o seu exemplo, Anderson. Valeu!

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.