en el onchangue quita esa funcion y manda el submit del form, luego en la funcion de validacion del form
si quieres cancelar el envio del mismo devuelve false:
Código HTML:
<form action="consultar_modelo_resultado.php" method="get">
<label for="codigo">EAN13:</label>
<input type="text" name="codigo" id="codigo_id" value="{codigo}">
<input type="button" name="consultar" value="Consultar" style="margin-top: 5px;" onclick="ValidarFormulario()">
</form>
<script type="text/javascript">
//<!--
codigo = document.getElementById("codigo_id");
function ValidarFormulario(){
form = document.forms[0];
if(codigo.value.length != 13){
setTimeout('codigo.select()', 100);
alert("Debe introducir un código EAN13 válido.");
return false;
} else {
//form.submit(); //NO
return true;// si el DELEGADO que controla el evento recibe true, envia el form.
}
}
document.forms[0].onsubmit = function(){
return ValidarFormulario(); //devuelve el resultado de la validación al DELEGADO
}
codigo.onchange = function(){
//ValidarFormulario(); //NO
document.forms[0].submit();//enviar
}
codigo.select();
//-->
</script>