Dúvida em JavaScript

5 respostas
M

Oi Gente,

Tenho um .jcl com um forEach que preenche uma tabela na tela… essa tabela tem vários campos e registros… Um desses campos é uma textarea (editável).

Como faço para como faço para o evento onchange dessa text área chamar uma função javascript passando o conteúdo que está sendo editado (que pode ser qualquer registro da tabela).

Hoje eu passo apenas o que está no property da text área e aí só funciona para o primeiro registro da tabela!!!

Obrigada a quem possa ajudar!!!

5 Respostas

rodrigo_corinthians
<c:forEach varStatus="index" ...>
<tr id="idLine<c:out value="${index.count}" />">
<td>Bla bla</td>
<td>Bla bla aa</td>
<td>Bla bla bbbb</td>
<td><input type="textarea" onblur="teste(<c:out value="${index.count}" />);"></td>
</tr>
</c:forEach>
<script>
function teste(id) {
var idLine = document.getElementById("idLine"+id);
if(idLine){
alert("Número de colunas = "+idLine.cells.length);
alert("Valor da terceira coluna = "+idLine.cells[0].innerText);
}
}
</script>

Eh isso q vc queria?

M

Eu tentei, mas apareceu o erro abaixo…

Impossível criar um atributos xml do nome [${index.count}] valor [ />);]

M

Esse é um exemplo do que eu tenho… E que só funciona para o primeiro registro da tabela…

<c:forEach var=“b” items="${resultado}"
varStatus=“status”>

<TR>

	<TD><html:textarea property="descricao" 
		onchange="conta()"
		onkeyup="conta()" 
		styleClass="text" value="${b.descricao}" rows="5"
		cols="100" style="textarea"></html:textarea>
	</TD>

</TR>

</c:forEach>

function conta(){

//alert(document.getElementById(descricao).value);

var x = document.getElementById(descricao).value.length;

var rest = 500 - x;

if (rest <= -1 ){

alert(Limite de 500 caracteres);

document.forms.descricao.focus();

return false;

}

document.getElementById(total).value = rest;

}
rodrigo_corinthians
<html:textarea  onchange="conta(${status.count})" ...

function conta(number){
 var x = eval("document.forms[0].descricao["+(number - 1)+"]");
var rest = 500 - x.value.length;
if (rest <= -1 ){
alert('Limite de 500 caracteres');
x.focus();
return false;
}
document.getElementById('total').value = rest;
}
O erro acontecia porque o campo textarea dentro do loop se transforma em um array.
M

Vou tentar…
Tem como retornar o índice de quem está sendo alterado???

Criado 26 de fevereiro de 2008
Ultima resposta 27 de fev. de 2008
Respostas 5
Participantes 2