Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> function habilita(){
document.form_prueba.e_direccion.disabled = false;
document.form_prueba.e_email.disabled = true;
}
function habilita2(){
document.form_prueba.e_direccion.disabled = true;
document.form_prueba.e_email.disabled = false;
}
function validar(){
var radios = document.getElementsByName('f_envio');
for (var i=0; i < document.form_prueba.f_envio.length; i++){
if (document.form_prueba.f_envio[i].checked){
var rad_val = document.form_prueba.f_envio[i].value;
if(rad_val == "CORREO"){
if(document.form_prueba.e_direccion.value == ""){
alert('Debes completar el campo correo');
return false;
}
}
if(rad_val == "EMAIL"){
if(document.form_prueba.e_email.value == ""){
alert('Debes completar el campo email');
return false;
}
}
}
}
}
<form name="form_prueba" onsubmit="return validar();"> <input name="f_envio" type="radio" value="CORREO" class="texto" onClick="habilita()" /> Por correo ordinario.
<strong>Dirección
</strong> <input name="e_direccion" type="text" class="texto" id="e_direccion" size="25" maxlength="25" disabled /> <input name="f_envio" type="radio" value="EMAIL" class="texto" onClick="habilita2()" /> Por correo electrónico.
<strong>Email
</strong> <input name="e_email" type="text" class="texto" id="e_email" size="25" maxlength="25" disabled />
Observaciones, en tu código sobran los condicionales y el checked
Te falta un input text para email
Ahora tendrías que averiguar como hacerle un trim a los campos de texto y desde ya, cualquier validación que hagas solo con javascript sin hacerla también en el server, es completamente ineficaz
Saludos