Seguinte estou tentando juntar dois scripts: um que adiciona inputs automaticamente e outro que calcula.
Por enquanto estou conseguindo apenas adicionar os inputs. Não estou conseguindo pegar os nomes dinâmicos na função de cálculo, nem apagar os campos com o botão "apagar".
O script está assim:
<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 = 31;
//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+"'>Preço: <input type='text' id='preço"+iCount+"' name='preço"+iCount+"' value='0'><br>Quantos: <input type='text' id='quantos"+iCount+"' id='quantos"+iCount+"' value='0' onblur='soma()'><br>Desconto: <input type='text' id='desconto"+iCount+"' name='desconto"+iCount+"' value='0' onblur='soma()'><br><hr size='1'><b>Total:<input type='text' id='total"+iCount+"' name='total"+iCount+"' ></b><br> <input type='button' value='Apagar campo' onClick='removeInput(\"linha"+iCount+"\")'></div>";
//var texto = "<div id='linha"+iCount+"'>Preço: <input type='text' id='preço' name='preço' value='0'><br>Quantos: <input type='text' id='quantos' id='quantos' value='0' onblur='soma()'><br>Desconto: <input type='text' id='desconto' name='desconto' value='0' onblur='soma()'><br><hr size='1'><b>Total:<input type='text' id='total' name='total' ></b><br> <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--;
}
}
</script>
<script language="JavaScript">
function soma(){
document.getElementById("total").value = '0';
var preço = parseFloat(document.getElementById("preço"+iCount).value);
var quantos = parseFloat(document.getElementById("quantos"+iCount).value);
var desconto = parseFloat(document.getElementById("desconto"+iCount).value);
document.getElementById("total"+iCount).value = preço * quantos - desconto;
}
</SCRIPT>
<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><input type="text" name="hidden1" id="hidden1" value="">
</form>
Pergunta
rubensxxx4
Bom dia, pessoal.
Seguinte estou tentando juntar dois scripts: um que adiciona inputs automaticamente e outro que calcula.
Por enquanto estou conseguindo apenas adicionar os inputs. Não estou conseguindo pegar os nomes dinâmicos na função de cálculo, nem apagar os campos com o botão "apagar".
O script está assim:
Como devo fazer? Alguém sabe???
Link para o comentário
Compartilhar em outros sites
2 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.