Entiendo perfectamente tu código, te explico mi caso concreto.
 
Tengo un formulario llamado datos_generales que llama a la validación así:  
Código:
 <FORM name="datos_generales" target="_blank"  method="post" action="ir.jsp" >
<input type="button" value="Enviar y seguir" onclick="submit_page(this.form)"  name="button2">
  Tengo un segundo formulario llamado form1 que llama a la validación así:  
Código:
 <form action="register.asp?mode=Register" id="form1" method="post" name="form1">
<input name="Submit" type="Submit" value="amigo" disabled="disabled" >
  
Bueno pues pongo:  
Código:
 <script type="text/javascript">
			function validar(f)	{
				pasa_validacion = f.dato.value != "";
				document.forms.form1.submit.disabled = !pasa_validacion;
				return pasa_validacion;
			}
		</script>
  Al principio de los dos forms, y:  
Código:
 onsubmit="return validar(this)"
  dentro del tag del primer <form> y claro está no habilita el submit del segundo.
Supongo que el problema debe estar en la llamada onclick que tengo en el primer form, supongo.
Venga a ver si nos acercamos al problema.
Ten en cuenta que el primer formulario tiene un javascript de validación muy completo llamado submit_page(this.form) y que me valida todos los campos.
No sería mejor intentar incluir en este javascript que valida el primer form, al final la opción  
Código:
 function validar(f)	{
				pasa_validacion = f.ocupacion.value != "";
				document.forms.form1.submit.disabled = !pasa_validacion;
				return pasa_validacion;
			}
  Ajustada a alguno de mis valores que no queden en blanco p.ej. ocupacion.
Lo pruebo y falla, pero seguro estaré cerca.