Hola
viktoria:
Es recomendable no postear código PHP en el foro javascript, lo normal es publicar un código HTML de ejemplo para que podamos trabajar con él, avisándonos de que el número de conjuntos de 3 campos será dinámico.
Por otra parte te recuerdo que no es válido tener en un mismo documento elementos con el mismo atributo
id, tendrás que utilizar por ejemplo
name en su defecto.
Para obtener los ids se me ha ocurrido utilizar DOM (ya que siempre tendremos esa misma estructura):
Código PHP:
<form name="elForm">
<input type='hidden' name='idUser[]' value='123' />
<input type='text' name='nombre[]' value='cient1' onchange='changeName(this)' />
<input type='text' name='actividad[]' value='act1' onchange='changeAp(this)' />
<br/>
<input type='hidden' name='idUser[]' value='456' />
<input type='text' name='nombre[]' value='cient2' onchange='changeName(this)' />
<input type='text' name='actividad[]' value='act2' onchange='changeAp(this)' />
<br/>
<input type='hidden' name='idUser[]' value='789' />
<input type='text' name='nombre[]' value='cient3' onchange='changeName(this)' />
<input type='text' name='actividad[]' value='act2' onchange='changeAp(this)' />
</form>
<script type="text/javascript">
function changeName(caja) {
//su id lo tendrá el campo anterior en el esquema dom
var suId = caja.previousSibling.previousSibling.value;
//recuperamos variable a editar
var dato=caja.value;
alert("Su valor es "+dato+" y su id es "+suId);
}
function changeAp(caja) {
}
</script>
He hecho dos veces
previousSibling porque el primero nos devuelve el espacio que hay entre las etiquetas, y el segundo ya llega al
tag anterior a ese espacio, esto es, el campo hidden de cada conjunto. Sería más seguro ir hacia atrás con un while hasta que encontremos un campo de tipo hidden con el nombre igual a "idUser[]", pero me ha funcionado simplemente así en IE6 y FF2.
Ojo si varías la estructura.
Un saludo.