Hola,
deberías hacerlo distinto.
prueba con esto:
Código:
<script language="javascript" type="text/javascript">
function asignaValor(val) {
iniciales = document.getElementById('iniciales')
iniciales.value = val.substr(0,3)
alert(iniciales.value)
}
</script>
<form id="form1" name="form1" method="post" action="">
<input name="apellido2" type="text" id="apellido2" onchange="asignaValor(this.value)"/>
<input name="iniciales" type="hidden" id="iniciales" />
</form>