problemas en Envio de un input checkbox en un formulario

Muy buenas shurmanos.
haber llevo toda la tarde matandome con el envio de un formulario en el cual cuando lo recibo deberia de decirme si los checkbox estan marcados y cual es ya que tengo dos (son los tipicos de aceptar condiciones legales).
Aqui os dejo toda la info y haber si alguien puede hecharme un cable con esto.
HTML
<form onSubmit="return validar(this)" action="enviar2.php" method="post">
<div id="cont_text">
<div id="text_aviso_formu">
<h2>Aviso legal</h2>
<p>Los datos de carácter personal que usted facilita a Tutora serán incluidos en un fichero automatizado bajo custodia y responsabilidad de Tutora Servicios Educativos S.L. para gestionar la relación comercial con el usuario.</p>
<p>El usuario podrá ejercer sus derechos de acceso, cancelación, rectificación y oposición mediante carta dirigida a esta sociedad a la calle_______________ de Madrid.</p>
<p>Asimismo, el usuario conoce y consiente a que en un futuro, aun cuando nuestra relación comercial esté finalizada, Tutora Servicios Educativos S.L. haga uso de sus datos personales con el fin de informarle de sus productos y/o servicios y a que comunique dichos datos a otras empresas asociadas cuyas actividades se relacionen con los productos y servicios ofrecidos por Tutora .......blalalalalalala... <input type="checkbox" name="acepta1" class="check" id="check1" value="1"/> </p>
<p>Con el envío del presente correo electronico el usuario autoriza a Tutora Servicios Educativos S.L. a la remisión de información comercial mediante su cuenta de correo electrónico así como otros medios electrónicos equivalentes, con la finalidad de evitar la recepción de correspondencia no deseada tal y como establece la Ley de Servicios de la Sociedad de la Información y del Comercio Electrónico. En el caso de que no desee recibir información comercial utilizando medios electrónicos hágalo constar constar en este formulario marcando la siguiente casilla <input type="checkbox" name="acepta2" class="check" id="check2" value="1"/></p>
<div id="btn_inicio">
<a href="index.html" title="Pulse para volver al inicio" class="home">Inicio</a>
</div>
</div>
</div>
<input type="text" name="nombre" id="nombre" alt="Nombre" value="Nombre" onfocus="cambiar(true,'nombre','Nombre')" onBlur="cambiar(false,'nombre','Nombre')"/>
<select name="servicios" id="servicios">
<option value="">Seleccione un servicios</option>
<option value="Atención temprana">Atención temprana</option>
<option value="Estimulación precoz">Estimulación precoz</option>
<option value="Evaluciación psicopedagógica">Evaluciación psicopedagógica</option>
<option value="Trastornos del aprendizaje">Trastornos del aprendizaje</option>
<option value="Psicólogo infantil">Psicólogo infantil</option>
<option value="logopedia / Foniatria">logopedia / Foniatria</option>
<option value="Sobredotación cognitiva">Sobredotación cognitiva</option>
<option value="Refuerzo escolar">Refuerzo escolar</option>
<option value="Formación de adultos">Formación de adultos</option>
<option value="Comunidades y empresas">Comunidades y empresas</option>
<option value="nanny teacher / nanny coach">nanny teacher / nanny coach</option>
<option value="Coaching para padres">Coaching para padres</option>
<option value="Idiomas">Idiomas</option>
<option value="Informática">Informática</option>
<option value="Música">Música</option>
<option value="Deportes">Deportes</option>
</select>
<input type="text" name="mail" id="mail" alt="E-mail" value="E-mail" onFocus="cambiar(true,'mail','E-mail')" onBlur="cambiar(false,'mail','E-mail')" />
<input type="text" name="telefono" id="telefono" alt="Telefono" value="Telefono" onFocus="cambiar(true,'telefono','Telefono')" onBlur="cambiar(false,'telefono','Telefono')" />
<textarea name="msg" id="msg" alt="Comentario" value="Message" onFocus="cambiar(true,'msg','Comentario')" onBlur="cambiar(false,'msg','Comentario')" ></textarea>
<input type="submit" value="enviar" alt="enviar" />
<input type="reset" value="Limpiar" alt="Limpiar" />
</form>
<div id="alerta">
<p id="formMsg"></p>
</div>
</div>
este es el codigo completo del formulario.

VALIDACION.JS
function validar(f){
var error="";
var f=document.forms[0];
var nombre=f.nombre.value;
var servicios=f.servicios.value
var email=f.mail.value;
var telefono=f.telefono.value;
var msg=f.msg.value;

if(!isString(nombre) || nombre=="Nombre"){
error += "\n <br /><span> El nombre es obligatorio.</span>";
document.getElementById("nombre").style.borderColo r= "#f00";
}
if(!isString(servicios) || servicios==""){
error += "\n <br /><span> El servicio es obligatorio.</span>";
document.getElementById("servicios").style.borderC olor= "#f00";
}
if(!isMail(email) || email=="E-mail"){
error += "\n <br /><span> El mail no es correcto.</span>";
document.getElementById("mail").style.borderColor= "#f00";
}

if(!isTelephone(telefono)){
error += "\n <br /><span> El telefono no es correcto.</span>";
document.getElementById("telefono").style.borderCo lor= "#f00";
}
if(!isString(msg) || msg == "Comentario"){
error += "\n <br /><span> El comentario es obligatorio.</span>";
document.getElementById("msg").style.borderColor= "#f00";
}
if(error==""){
return true;
} else{
formMsg("Revise los siguientes errores:" + error);

return false;
}
}
function limpia(objeto){
objeto.style.borderColor="#978b7e";
}

function cambiar(b,campo,porDefecto){
var input = document.getElementById(campo);
if (b && (input.value == "" || input.value == porDefecto)) {
input.value = "";
input.style.color = "#8C0224";
} else if (!b && input.value == "") {
input.value = porDefecto;
input.style.color = "#8C0224";
} else {
input.style.color = "#8C0224";
}
}
function validacheckboxex(){

if(!document.getElementById('check1').checked && !document.getElementById('check2').checked ){
error += "\n <br /><span> El check es obligatorio.</span>";
document.getElementById("msg").style.borderColor= "#f00";
}

}
function inicio(){
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++ ){
if (inputs.value != inputs.alt) {
//inputs.style.color = "#000";
inputs.value = inputs.alt;
}
}
}


function formMsg(t){
$("#formMsg").stop(true,true).html(t).show().delay (4000).fadeOut(10000);
}

PHP envio
function validar(f){
var error="";
var f=document.forms[0];
var nombre=f.nombre.value;
var servicios=f.servicios.value
var email=f.mail.value;
var telefono=f.telefono.value;
var msg=f.msg.value;

if(!isString(nombre) || nombre=="Nombre"){
error += "\n <br /><span> El nombre es obligatorio.</span>";
document.getElementById("nombre").style.borderColo r= "#f00";
}
if(!isString(servicios) || servicios==""){
error += "\n <br /><span> El servicio es obligatorio.</span>";
document.getElementById("servicios").style.borderC olor= "#f00";
}
if(!isMail(email) || email=="E-mail"){
error += "\n <br /><span> El mail no es correcto.</span>";
document.getElementById("mail").style.borderColor= "#f00";
}

if(!isTelephone(telefono)){
error += "\n <br /><span> El telefono no es correcto.</span>";
document.getElementById("telefono").style.borderCo lor= "#f00";
}
if(!isString(msg) || msg == "Comentario"){
error += "\n <br /><span> El comentario es obligatorio.</span>";
document.getElementById("msg").style.borderColor= "#f00";
}
if(error==""){
return true;
} else{
formMsg("Revise los siguientes errores:" + error);

return false;
}
}
function limpia(objeto){
objeto.style.borderColor="#978b7e";
}

function cambiar(b,campo,porDefecto){
var input = document.getElementById(campo);
if (b && (input.value == "" || input.value == porDefecto)) {
input.value = "";
input.style.color = "#8C0224";
} else if (!b && input.value == "") {
input.value = porDefecto;
input.style.color = "#8C0224";
} else {
input.style.color = "#8C0224";
}
}
function validacheckboxex(){

if(!document.getElementById('check1').checked && !document.getElementById('check2').checked ){
error += "\n <br /><span> El check es obligatorio.</span>";
document.getElementById("msg").style.borderColor= "#f00";
}

}
function inicio(){
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++ ){
if (inputs.value != inputs.alt) {
//inputs.style.color = "#000";
inputs.value = inputs.alt;
}
}
}


function formMsg(t){
$("#formMsg").stop(true,true).html(t).show().delay (4000).fadeOut(10000);
}

Pido disculpas por el tocho pero creo que es la mejor forma para poder probarlo
Un saludo.
Bien no se si hayas separado los scripts, pero si llamas alguna vez a la funcion validar checkbox?
digo que si tambien compruebas que todas las funciones sean llamadas? ... al primer vistaso no veo que llames las funciones
suponiendo que tu respuesta sea que si llames a las funciones puede que las llames mal esta es una opcion y la otra
pensando que todo lo antes mencionado es correcto
Aparentemente se ve bien todo pero por probar.
¿Puedes intentar esto ?

Bien prueba cambiando esto:
if(!document.getElementById('check1').checked && !document.getElementById('check2').checked ){

por esto:

if(document.getElementById('check1').checked != true && document.getElementById('check2').checked !=true ){

Recuerda que esa instruccion hace que solo si los dos estan palomeados , es necesario tener los dos checkbox palomeados para que funcione esa condicional de lo contrario no funcionara si solo una es palomeada , si quieres que funcione con cualquiera de los dos campos seria asi:

if(document.getElementById('check1').checked != true || document.getElementById('check2').checked !=true ){

Espero que despues de eso pueda funcionar.

Un saludo.


PD: Te aviso que estube mejorando el manejo de servidores por linux (sin cpanel) . Tambien decirte que ya tengo un VPS listo para hacerlo funcionar con lo que vayamos programando. Asi no nos robaran datos por ser shared hosting.
SurKaiser escribió:Bien no se si hayas separado los scripts, pero si llamas alguna vez a la funcion validar checkbox?
digo que si tambien compruebas que todas las funciones sean llamadas? ... al primer vistaso no veo que llames las funciones
suponiendo que tu respuesta sea que si llames a las funciones puede que las llames mal esta es una opcion y la otra
pensando que todo lo antes mencionado es correcto
Aparentemente se ve bien todo pero por probar.
¿Puedes intentar esto ?

Bien prueba cambiando esto:
if(!document.getElementById('check1').checked && !document.getElementById('check2').checked ){

por esto:

if(document.getElementById('check1').checked != true && document.getElementById('check2').checked !=true ){

Recuerda que esa instruccion hace que solo si los dos estan palomeados , es necesario tener los dos checkbox palomeados para que funcione esa condicional de lo contrario no funcionara si solo una es palomeada , si quieres que funcione con cualquiera de los dos campos seria asi:

if(document.getElementById('check1').checked != true || document.getElementById('check2').checked !=true ){

Espero que despues de eso pueda funcionar.

Un saludo.


PD: Te aviso que estube mejorando el manejo de servidores por linux (sin cpanel) . Tambien decirte que ya tengo un VPS listo para hacerlo funcionar con lo que vayamos programando. Asi no nos robaran datos por ser shared hosting.
Muchas gracias por tú ayuda, haber si ya lo soluciono de una vez.
Un saludo