Ejecutar funcion javascript de verificacion dentro de la funcion de creacion de registro

publicado por: Anonymous

Poseo una funcion javascript para crear un registro llamada crearSancion
, esta verifica los campos y luego muestra un mensaje para confirmar el guardado, si se acepta se hace un form.submit

Ocurre que agregue otro script para contar los datos de un checkbox al final del registro, llamado verificar. y he tratado de configurarlo para que cuente y luego guarde, pero no he podido.

Quisiera que cuando le des al boton de guardar te ejecute la funcion de crear el registro pero antes de mostrar “desea guardar los datos” te verifique el checbox, y una vez verificado te diga “desea guardar los datos?”

Trate de hacerlo metiendo la funcion de verificar dentro de la de creación, pero cuando llega a verificar luego de ejecutarse no hace mas nada.

Tambien trate de colocar ambos llamados de funcion en el boton, pero solo ejecuta el primero que tenga.

Aqui les dejo los codigos:

crearSancion():

function CrearSancion()
{
    var obj1 = window.document.getElementById("cedula");
    var obj2 = window.document.getElementById("cedula1");
    var obj3 = window.document.getElementById("cedula2");   
    var obj4 = window.document.getElementById("narticulo");
    var obj5 = window.document.getElementById("naparte");   
    var obj7 = window.document.getElementById("unidad");
    var obj8 = window.document.getElementById("unidad_uuss");
    var obj9 = window.document.getElementById("estados");
    var obj10 = window.document.getElementById("docanexos");        
    var obj11 = window.document.getElementById("fecha_ultimo");     
    var obj12 = window.document.getElementById("cargo");        
    var obj13 = window.document.getElementById("xdes_sancion");     
    var obj14 = window.document.getElementById("fecha_inicio");
    var obj15 = window.document.getElementById("aclaratoria");
    var obj16 = window.document.getElementById("nombrecompleto1");
    var obj17 = window.document.getElementById("nombrecompleto2");
    var obj18 = window.document.getElementById("nombrecompleto3");  


    if(obj1.value == "")
    {
        alert ("Debe agregar el numero de cedula del sancionado");      
    }
    else if((obj16.value == ""))
    {
        alert ("Debe ingresar el nombre del sancionado");       
    }
    else if((obj17.value == ""))
    {
        alert ("Debe ingresar el nombre del sancionado");       
    }
    else if((obj18.value == ""))
    {
        alert ("Debe ingresar el nombre del sancionado");       
    }
    else if((obj2.value == ""))
    {
        alert ("Debe agregar el numero de cedula del que sanciona");        
    }

    else if((obj4.value == "0"))
    {
        alert ("Debe agregar el articulo");     
    }
    else if((obj5.value == "0"))
    {
        alert ("Debe agregar el aparte del articulo");      
    }   


    else if((obj9.value == "0"))
    {
        alert ("Debe seleccionar el lugar donde se realiza la sancion");        
    }

    else if((obj10.value == "0"))
    {
        alert ("Debe seleccionar el tipo de documento anexado a la sancion");       
    }
    else if((obj11.value == ""))
    {
        alert ("Debe agregar la fecha del ultimo ascenso");     
    }
    else if((obj12.value == ""))
    {
        alert ("Debe agregar el cargo");        
    }
    else if((obj13.value == "0"))
    {
        alert ("Debe agregar el tipo de sancion");      
    }
    else if((obj14.value == ""))
    {
        alert ("Debe agregar la fecha de inicio de la sancion");        
    }
    else if((obj15.value == ""))
    {
        alert ("Debe agregar la aclaratoria de la sancion");        
    }

    else
    {
            if(confirm('Esta seguro que desea guardar los datos'))
        {
            var obj1 = window.document.getElementById('accion');
            obj1.value = 'I';
            form1.submit(); 
    }
    }
}

verificar():

    function verificar(){
alert("Verificando sus datos Selección de Circunstancias Atenuantes");

var cb = [];
var atenuantes="atenuantes[]";
var n1=0,cuales="";
cb = document.getElementsByName(atenuantes);
    for (var i = 0; i < cb.length; i++){
    var e = parseInt(i);
        if(cb[i].checked == true){
        cuales += cb[i].value + ' ';
        n1++;
        }
    } // fin loop
    if(n1 == 0){
    var mensaje1 = 'No hubo selección de atenuantes';
    }else{
    var mensaje1 = 'Se marcaron el/las opción(es) de valor(es): ' + cuales
    }
alert('El total de opciones marcadas es: ' + n1);
alert(mensaje1);

alert("Verificando sus datos Selección de Circunstancias Agravantes");
var cb2 = [];
var agravantes="agravantes[]";
var n2=0,cuales2="";
cb2 = document.getElementsByName(agravantes);
    for (var i = 0; i < cb2.length; i++){
    var e = parseInt(i);
        if(cb2[i].checked == true){
        cuales2 += cb2[i].value + ' ';
        n2++;
        }
    } // fin loop
    if(n2 == 0){
    var mensaje2 = 'No hubo selección de agravantes';
    }else{
    var mensaje2 = 'Se marcaron el/las opción(es) de valor(es): ' + cuales2
    }
alert('El total de opciones marcadas es: ' + n2);
alert(mensaje2);
document.getElementById('boxes').reset();
}

boton html:

<input type="button" name="crear" onClick="CrearSancion();" value="Aceptar" />

Lo coloco al final, ya que este muestra 4 mensajes y seria engorroso mostrar los 4 mensajes cada vez que te falte un valor

solución

Solamente tienes que mandar a llamar una función dentro de otra. Te recomiendo hacer las validaciones en javascript utilizando “return;” para terminar con la ejecución del método y regresar al form para actualizar la información, así te evitas el estar utilizando los else todo el rato. En todo caso tu función así como la tienes debería quedar más o menos así:

function CrearSancion()
{
    var obj1 = window.document.getElementById("cedula");
    var obj2 = window.document.getElementById("cedula1");
    var obj3 = window.document.getElementById("cedula2");   
    var obj4 = window.document.getElementById("narticulo");
    var obj5 = window.document.getElementById("naparte");   
    var obj7 = window.document.getElementById("unidad");
    var obj8 = window.document.getElementById("unidad_uuss");
    var obj9 = window.document.getElementById("estados");
    var obj10 = window.document.getElementById("docanexos");        
    var obj11 = window.document.getElementById("fecha_ultimo");     
    var obj12 = window.document.getElementById("cargo");        
    var obj13 = window.document.getElementById("xdes_sancion");     
    var obj14 = window.document.getElementById("fecha_inicio");
    var obj15 = window.document.getElementById("aclaratoria");
    var obj16 = window.document.getElementById("nombrecompleto1");
    var obj17 = window.document.getElementById("nombrecompleto2");
    var obj18 = window.document.getElementById("nombrecompleto3");  


    if(obj1.value == "")
    {
        alert ("Debe agregar el numero de cedula del sancionado");      
    }
    else if((obj16.value == ""))
    {
        alert ("Debe ingresar el nombre del sancionado");       
    }
    else if((obj17.value == ""))
    {
        alert ("Debe ingresar el nombre del sancionado");       
    }
    else if((obj18.value == ""))
    {
        alert ("Debe ingresar el nombre del sancionado");       
    }
    else if((obj2.value == ""))
    {
        alert ("Debe agregar el numero de cedula del que sanciona");        
    }

    else if((obj4.value == "0"))
    {
        alert ("Debe agregar el articulo");     
    }
    else if((obj5.value == "0"))
    {
        alert ("Debe agregar el aparte del articulo");      
    }   


    else if((obj9.value == "0"))
    {
        alert ("Debe seleccionar el lugar donde se realiza la sancion");        
    }

    else if((obj10.value == "0"))
    {
        alert ("Debe seleccionar el tipo de documento anexado a la sancion");       
    }
    else if((obj11.value == ""))
    {
        alert ("Debe agregar la fecha del ultimo ascenso");     
    }
    else if((obj12.value == ""))
    {
        alert ("Debe agregar el cargo");        
    }
    else if((obj13.value == "0"))
    {
        alert ("Debe agregar el tipo de sancion");      
    }
    else if((obj14.value == ""))
    {
        alert ("Debe agregar la fecha de inicio de la sancion");        
    }
    else if((obj15.value == ""))
    {
        alert ("Debe agregar la aclaratoria de la sancion");        
    }



      else
        {
    //Una vez que terminaste de verificar que la información no esté vacía puedes llamar al método que verifica lo de los checkbox y hacer que regrese un true/false y dependiendo de eso hacer la pregunta del confirm.

                if(verificar()){
                    if(confirm('Esta seguro que desea guardar los datos')){
                    var obj1 = window.document.getElementById('accion');
                    obj1.value = 'I';
                    form1.submit(); 
            } 
        }
        }
    }

Y la función verificar() quedaría así:

function verificar(){
alert("Verificando sus datos Selección de Circunstancias Atenuantes");

var cb = [];
var atenuantes="atenuantes[]";
var n1=0,cuales="";
cb = document.getElementsByName(atenuantes);
    for (var i = 0; i < cb.length; i++){
    var e = parseInt(i);
        if(cb[i].checked == true){
        cuales += cb[i].value + ' ';
        n1++;
        }
    } // fin loop
    if(n1 == 0){
    var mensaje1 = 'No hubo selección de atenuantes';
    return false; //Para que no dé submit
    }else{
    var mensaje1 = 'Se marcaron el/las opción(es) de valor(es): ' + cuales
    }
//alert('El total de opciones marcadas es: ' + n1);
//alert(mensaje1); Si realmente necesitas estos alerts se los descomentas

alert("Verificando sus datos Selección de Circunstancias Agravantes");
var cb2 = [];
var agravantes="agravantes[]";
var n2=0,cuales2="";
cb2 = document.getElementsByName(agravantes);
    for (var i = 0; i < cb2.length; i++){
    var e = parseInt(i);
        if(cb2[i].checked == true){
        cuales2 += cb2[i].value + ' ';
        n2++;
        }
    } // fin loop
    if(n2 == 0){
    var mensaje2 = 'No hubo selección de agravantes';
    return false; //Para que no dé submit
    }else{
    var mensaje2 = 'Se marcaron el/las opción(es) de valor(es): ' + cuales2


       }
    alert('El total de opciones marcadas es: ' + n2);
    alert(mensaje2);
//No entiendo bien tus validaciones, pero si necesitas que esté seleccionado algún checkbox para poder hacer submit entonces validas
if(n1 > 0 && n2 > 0){
return true; //Verifica que se haya seleccionado al menos un checkbox para cada caso
} else { //Si no se seleccionó al menos uno checkboc para ambos casos entonces no dará submit
return false;
}
    //document.getElementById('boxes').reset(); Sitúa esta línea antes de algún return dependiendo lo que quieras que haga.
    }

Pruébalo y nos comentas. Tu código no es el más apto que digamos, pero debería funcionar.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *