Ir para conteúdo

POWERED BY:

Arquivado

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

rd111072

Erro em adicionar/nomear campo

Recommended Posts

Bom dia, moçada.

 

Estou testando uma função js aqui do fórum, mas a mesma está dando um erro. Quando passa de nove campos o script que até agora criou e nomeou os campos dinamicamente de 1 até 9, quando chega no dez começa a repetir valores e nomes dos campos assim:

 

Minha foto 0

2x20,00=40

 

Minha foto 1

3x20,00=60

 

Minha foto 2

1x20,00=20

 

Minha foto 3

1x20,00=20

 

Minha foto 4

1x20,00=20

 

Minha foto 5

2x20,00=40

 

Minha foto 6

2x25,00=50

 

Minha foto 7

2x20,00=40

 

Minha foto 8

2x20,00=40

 

Minha foto 9

2x20,00=40

 

Minha foto 1

3x20,00=60

 

Minha foto 0

2x20,00=40

 

Minha foto 1

3x20,00=60

 

Minha foto 1

3x20,00=60

 

Minha foto 1

3x20,00=60

 

Minha foto 2

1x20,00=20

 

Total: R$ 670,00

 

O script é esse, autoria do Klonder:

 

<html>  
<head>
	<title>java script: Adicionar e remover campos dinamicamente!</title>  
<script language="JavaScript" type="text/javascript">   
/*
Script desenvolvido por: klonder
Postagem exclusiva em: http://www.forum.imasters.com.br
Liberado para uso e modificação.
*/

//Não altere esses valores!
var iCount = 0;
var iCampos = 1;
var hidden1; 


//Definindo quantos campos poderão ser criados (máximo);
var iCamposTotal = 30; 



//Função que adiciona os campos;
function addInput() {   
if (iCampos <= iCamposTotal) {
	hidden1 = document.getElementById("hidden1");
	
	//Criando uma variável que armazenará as informações da linha que será criada.
	//Os campos estão sendo colocados no interior de uma div, pois a linha contém muitos elementos;
	//Basta excluir a div, para excluir todos os elementos da linha;
	var texto = "<div id='linha"+iCount+"'><input type='text' name='texto"+iCount+"' id='texto"+iCount+"' value='Minha foto "+iCount+"'><select name='select"+iCount+"' id='select"+iCount+"' size='1' height='1'><option value='20,00'>15x10</option><option value='25,00'>20x20</option><option value='30,00'>25x20</option></select> Quantidade: <input type='text' name='quantidade"+iCount+"' id='quantidade"+iCount+"' value=''> <input type='button' value='Apagar campo' onClick='removeInput(\"linha"+iCount+"\")'></div>";	  
  
	//Capturando a div principal, na qual os novos divs serão inseridos:
	var camposTexto = document.getElementById('camposTexto');   
	camposTexto.innerHTML = camposTexto.innerHTML+texto;
  
	//Escrevendo no hidden os ids que serão passados via POST;
	//No código ASP ou PHP, você poderá pegar esses valores com um split, por exemplo;
		if (hidden1.value == "") {
			document.getElementById("hidden1").value = iCount;
		}else{
			document.getElementById("hidden1").value += ","+iCount;
		}
iCount++;
iCampos++;
}   
}
   
//Função que remove os campos;
function removeInput(e) {
   var pai = document.getElementById('camposTexto');
   var filho = document.getElementById(e);
   hidden1 = document.getElementById("hidden1");
   var campoValor = document.getElementById("texto"+e.substring(5)).value;
   var lastNumber = hidden1.value.substring(hidden1.value.lastIndexOf(",")+1);

   if(confirm("O campo que contém o valor:\n» "+campoValor+"\nserá excluído permanentemente!\n\nDeseja prosseguir?")){
		var removido = pai.removeChild(filho);
		//Removendo o valor de hidden1:
		if (e.substring(5) == hidden1.value) {
			hidden1.value = hidden1.value.replace(e.substring(5),"");
		}else if(e.substring(5) == lastNumber) {
			hidden1.value = hidden1.value.replace(","+e.substring(5),"");
		}else{
			hidden1.value = hidden1.value.replace(e.substring(5)+",","");		
		}
	iCampos--;
	}
}

function orcamento(){
hidden1 = document.getElementById("hidden1");

//Convertendo os campos do hidden em um array:
var obterParametros = new Array();
var subTotal = new Array();
var iCount;
var descFinal = "";
var total = 0;

var iPar = 0;
	for (iCount = 0; iCount < hidden1.value.length; iCount++) {
		if(hidden1.value.substr(iCount,1) != ",") {
			obterParametros[iPar] = hidden1.value.substr(iCount,1);
			iPar++;
		}
	
	}	

	//Somando os valores:
	for (iCount = 0; iCount < obterParametros.length; iCount++){
		subTotal[iCount] = parseInt(document.getElementById("select"+obterParametros[iCount]).value) * parseInt(document.getElementById("quantidade"+obterParametros[iCount]).value);
		descFinal += document.getElementById("texto"+obterParametros[iCount]).value+"\n"+document.getElementById("quantidade"+obterParametros[iCount]).value+"x"+document.getElementById("select"+obterParametros[iCount]).value+"="+subTotal[iCount]+"\n\n";
		total += subTotal[iCount];
		document.getElementById("textarea1").value = descFinal+"Total: R$ "+total+",00";
	}
	

	
}
</script> 
</head>  

<body>  

<form  name="my_form" id="my_form" action="" method="post">  
<input type="button" value="Criar campo texto" name="add_input" id="add_input" onClick="addInput();">  
<div id="camposTexto"></div>
<br><br>Ajuste o campo abaixo para "hidden" no código-fonte.
<br>O valor passado será utilizado na página ASP ou PHP, por exemplo, servindo de controle dos ids passados:
<br><br><input type="button" value="Fazer orçamento!" onClick="orcamento()")
<br><input type="text" name="hidden1" id="hidden1" value="">
</form>
<br>Orçamento:  
<br><textarea name="textarea1" id="textarea1" wrap="OFF" style="width:300; height:200px"></textarea>
</body>  
</html>

Alguém sabe???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu coloco dez itens ele soma de 0 até 9 e depois repete os valores do item 0 e 1. Se coloco 11, repete do item 1 e de novo do item 1. Se coloco 12, repete o valor do item 1 e do 2, assim por diante.

Como pode???

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.