jQuery unbind崩溃更新面板

时间:2011-05-31 11:03:32

标签: jquery asp.net jquery-dialog

我有一个jQuery对话框,里面有更新面板。为了使事情变得更复杂,我使用jQuery验证。

为了禁用验证,我在beforeClose中使用了jQuery unbind函数。问题是unbind“崩溃”更新面板。

是否有其他方法可以在不“崩溃”更新面板的情况下禁用验证?

编辑:单击对话框按钮时,解除绑定也会启动回发。该页面完全使用ajax完成。我不希望在我的页面中回发。

function mostrarVentanaVehiculo() {
    $(document).ready(function () {
        var $dialogContentVehiculo = $("#divDatosFacturaVehiculo");
        var bDatosModificados = false;
        var bGuardar = false;
        var dlg = $dialogContentVehiculo.dialog({
            modal: true,
            title: "Datos de vehículo",
            width: '780px',
            draggable: false,
            resizable: false,
            autoOpen: false,
            open: function () {
                $('#divDatosFacturaVehiculo input[type=text], #divDatosFacturaVehiculo input[type=checkbox],#divDatosFacturaVehiculo select').each(function (i) {
                    $(this).data('valor_inicial', $(this).val());
                });

               $("#phContenidos_tbFechaMatriculaOrigen, #phContenidos_tbFechaMatriculaEspana, #phContenidos_tbFechaFab, #phContenidos_tbFechaCaducidad").mask("99/99/99?99");
                $("#phContenidos_tbDatosFacturaVehiculoTecnicosMMA, #phContenidos_tbDatosFacturaVehiculoTecnicosCilindrada,  #phContenidos_tbDatosFacturaVehiculoTecnicosPotenciaReal").mask("9?999,99");
                $("#phContenidos_tbddlDatosFacturaVehiculoTecnicosAsientos, #phContenidos_tbDatosFacturaVehiculoTecnicosNeumaticos").mask("99?99");
            },
            close: function () {
                $dialogContentVehiculo.dialog("destroy");
                $dialogContentVehiculo.hide();
                $("#phContenidos_hlVehiculoDialogo").focus();
            },
            buttons: {
                "Aceptar": function () {
                    $('#divDatosFacturaVehiculo input[type=text], #divDatosFacturaVehiculo input[type=checkbox],#divDatosFacturaVehiculo select').each(function (i) {
                        if ($(this).val() !== $(this).data('valor_inicial')) {
                            bDatosModificados = true;
                        }
                    });
                    if (bDatosModificados) {
                        jQuery.validator.messages.required = "";
                        jQuery.validator.messages.number = "";
                        jQuery.validator.messages.minlength = "";
                        $("#mainForm").validate({
                            ignore: ":disabled",
                            invalidHandler: function (e, validator) {
                                var errores = validator.numberOfInvalids();
                                if (errores > 0) {
                                    $("divDatosFacturaVehiculo.error").show();
                                } else {
                                    $("divDatosFacturaVehiculo.error").hide();
                                }
                            },
                            rules: {
                                ctl00$phContenidos$tbMatricula: {
                                    required: true,
                                    minlength: 4
                                },
                                ctl00$phContenidos$tbBastidorNumero: {
                                    required: {
                                        depends: function (element) {
                                            return !$("#phContenidos_cbBastidor").attr("checked");
                                        }
                                    }
                                },
                                ctl00$phContenidos$tbFechaMatriculaOrigen: {
                                    required: true
                                },
                                ctl00$phContenidos$ddlDatosFacturaVehiculoTecnicosModelo: {
                                    required: true
                                },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosClasificacion: {
                                    required: true,
                                    minlength: 4
                                },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosMMA: {
                                    required: true,
                                    number: true
                                },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosCilindrada: { number: true },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosTara: { number: true },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosPotenciaReal: { number: true },
                                ctl00$phContenidos$tbDatosFacturaOtrosDatosEjes: { number: true },
                                ctl00$phContenidos$tbddlDatosFacturaVehiculoTecnicosAsientos: { number: true },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosNeumaticos: { number: true },
                                ctl00$phContenidos$tbatosFacturaVehiculoTecnicosMedNeumaticos: { number: true },
                                ctl00$phContenidos$tbDatosFacturaVehiculoNKilometros: { number: true },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosClasificacion: {
                                    required: true,
                                    minlength: 4
                                },
                                ctl00$phContenidos$tbDatosFacturaVehiculoTecnicosCategoria: {
                                    required: true
                                }
                            },
                            submitHandler: function (form) {
                                bGuardar = true;
                                $dialogContentVehiculo.dialog("close");
                            }
                        });
                    } else {
                        bGuardar = false;
                        $dialogContentVehiculo.dialog("close");
                    }
                },
                beforeClose: function (event, ui) {
                if (bGuardar) {
                    var bOK = checkVehiculoAdicionales();
                    if (bOK) {
                        actualizarVehiculo();
                        $("#phContenidos_btnActualizarTotalVehiculo").click();
                    } else {
                        return false;
                    }
                }
                $("#mainForm").unbind('submit');
            }
        });
        dlg.parent().appendTo(jQuery("form:first"));
        dlg.dialog('open');
    });}

1 个答案:

答案 0 :(得分:1)

HERE解释了jquery名称间隔事件......

此外,你可以做这样的事情

$("#mainForm").bind("submit.something", function(e){/*...*/});

如果你解除绑定,你可以做到

$("#mainForm").unbind("submit.something");