Jump to content

Recommended Posts

Posted

Boa tarde a todos,

não sou especialista em javascript, só vou fazendo as coisas a medida das minhas necessidades, mas desta vez esta aqui um bico de obra.

Estou, para um cliente a fazer um formulário que deve permitir copiar valores de caixas de texto mediante uma ordem. Depois de alguma pesquisa cheguei ao seguinte código para copiar:

<script type="text/javascript">
vetorCopiar = new Array();
function copiar() {
 formulario = document.getElementById("preferencias");
 copiar = document.getElementById("copiar").value;
 alert("Entrei");
 var inputs = document.getElementsByTagName("input");
 var j = 0;
 for (var i = 0; i < inputs.length; i++) {
  if(inputs[i].name.indexOf(copiar+'_') == 0) {
   //copiar[i] = inputs[i].name.indexOf(copiar+'_').value;
   vetorCopiar[j] = inputs[i].value;
   j++;
 }
 }

}

function colar() {
 colar = document.getElementById("colar").value;

 var inputs = document.getElementsByTagName("input");
 var j = 0;
 for (var i = 0; i < inputs.length; i++) {
  if(inputs[i].name.indexOf(colar+'_') == 0) {
   //
   document.getElementById(inputs[i].name).value=vetorCopiar[j];
   //alert(document.getElementById(inputs[i].name).value);
   //alert(vetorCopiar[j]);
   j++;
 }
   }
 document.getElementById("copiar").value = "";
 document.getElementById("colar").value = "";
}
</script>

E já consigo copiar UMA vez os valores de um conjunto de inputs para outro conjunto, o problema é quando tempo fazer uma segunda vez isso no mesmo formulário não me permite!

O que poderei fazer?

Alguma ajuda?

Posted (edited)

Viva João,

Não estás a fazer instruções redundantes? Suponho que precises mesmo guardar os valores dos inputs em memória porque não tens acesso aos inputs copiar quando executas o colar certo?

Exemplo básico:

<div id="isto-vai-desaparecer-da-dom">
<input name="copiar_1" value="valor1" />
<input name="copiar_2" value="valor2" />
</div>

<input name="colar_1" value="valor1" />
<input name="colar_2" value="valor2" />


var buffer = {};

function copiar() {
   buffer = {};
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
	if (inputs[i].name.indexOf(copiar+'_') == 0) {
		buffer[inputs[i].name] = inputs[i].value;
	}
}
}

function colar () {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
	if (inputs[i].name.indexOf(colar+'_') == 0) {
		inputs[i].value = buffer[inputs[i].name];
	}
}
}

Fiz á mão, testa aí e vê se funca...

Agora à la Javascript... é por estas coisas que cada vez mais de utilizam Models em Javascript... dá uma olhada em Frameworks JS... dá mais trabalho mas o código fica melhor organizado...

Edited by taviroquai

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.