jquery函数和if块的问题

本文关键字:问题 if 函数 jquery | 更新日期: 2023-09-27 18:29:18

感谢您提前阅读我的问题,我有一个jquery函数,其中我使用一个标志变量($act)来运行if块,但它总是零(0)并且永远不会改变,因为if块不起作用,将不胜感激

http://jsfiddle.net/ricardojriosr/CWF6G/

function recibo_pago() {
        var errores = [];
        var $checkedRecords_facts = $('.checkedRecords:checked');
        var $checkedRecords_pagos = $('.checkedRecords2:checked');
        var $f_rec = $('#fecha_recibo');
        var $n_rec = $('#numero_recibo');
        var $act = 0;
        var $CodClie = codigo_cliente;
        if ($checkedRecords_facts.length < 1) {
            errores.push('Debe Seleccionar al menos una factura');
        }
        if ($checkedRecords_pagos.length < 1) {
            errores.push('Debe Seleccionar al menos un Pago');
        }
        if ($f_rec.val() == '') {
            errores.push('Debe Ingresar la fecha del Recibo de Pago');
        }
        if (errores.length == 0) {
            $arreglo_facts = [];
            $arreglo_pagos = [];
            $checkedRecords_facts.each(function (index) {
                $arreglo_facts.push($(this).text());
            });
            $checkedRecords_pagos.each(function (index) {
                $arreglo_pagos.push($(this).text());
            });
            var $jsonString_facts = JSON.stringify($arreglo_facts);
            var $jsonString_pagos = JSON.stringify($arreglo_pagos);
            if ($n_rec.val() == '') {
                jConfirm('¿Estas seguro que desea guardar el Recibo de Pago sin Número de Control?', 'Confirmar Guardar sin Número de Control', function ($r) {
                    if ($r) {
                        //it changes value here to 1, i used console.log to see it
                        $act = 1;
                    } else {
                        $n_rec.focus();
                    }
                });                
            } else {
                $act = 1;
            }
            //Here the $act value is zero (0) and does not work the code inside the if block, help please
            if ($act == 1) {
                console.log($act);
                var datos = { facts: $jsonString_facts, pags: $jsonString_pagos, Fecha: $f_rec.val(), NoRecibo: $n_rec.val() };
                $.ajax({
                    url: direccion + 'PROG_4394/GuardarReciboPago',
                    dataType: "json",
                    data: datos,
                    success: function (data) {
                        jAlert(data.mensaje, data.titulo);
                        if (data.success) {
                            jAlert("ENVIO TRUE", "PRUEBA");
                        }
                    }
                })
            }
        } else {
            var DivErrores = $('#errores');
                Errores = errores;
            if (Errores.length > 0) {
                DivErrores.html('<h1>Errores</h1>')
                    .append('<p>Verifique los siguientes errores antes de continuar</p>')
                    .append('<ul>');
                Errores.forEach(function (error) {
                    DivErrores.append('<li><p style="display: inline;">' + error + '</p>' + '</li>');
                });
                DivErrores.append('</ul><br/>');
            } else {
                DivErrores.empty();
            }
        }
    }

jquery函数和if块的问题

感谢@HanleEscaño的指导

它是一个确认模式异步,所以我基本上将它分为两个功能来解决这个问题

 function llamada_recibo_pago($jsonString_facts, $jsonString_pagos, $f_rec, $n_rec) {
        var datos = { facts: $jsonString_facts, pags: $jsonString_pagos, Fecha: $f_rec, NoRecibo: $n_rec };
        $.ajax({
            url: direccion + 'PROG_4394/GuardarReciboPago',
            dataType: "json",
            data: datos,
            success: function (data) {
                jAlert(data.mensaje, data.titulo);
                if (data.success) {
                    jAlert("ENVIO TRUE", "PRUEBA");
                }
            }
        })
    }

在像这样的asyn函数中称为llamadas

//alert($act);
            if ($n_rec.val() == '') {
                jConfirm('¿Estas seguro que desea guardar el Recibo de Pago sin Número de Control?', 'Confirmar Guardar sin Número de Control', function ($r) {
                    if ($r) {
                        $act = 1;
                        llamada_recibo_pago($jsonString_facts, $jsonString_pagos, $f_rec.val(), $n_rec.val());
                    } else {
                        $n_rec.focus();
                    }
                });                
            } else {
                $act = 1;
            }
            //Here the $act value is zero (0) and does not work the code inside the if block, help please
            //alert($act);
            if ($act == 1) {
                llamada_recibo_pago($jsonString_facts, $jsonString_pagos, $f_rec.val(), $n_rec.val());
            }