0

内部に更新パネルがあるjQueryダイアログがあります。もう少し複雑にするために、jQuery 検証を使用します。

検証を無効にするために、jQuery unbind 関数を使用しbeforeCloseます。問題は、バインドを解除すると更新パネルが「クラッシュ」することです。

更新パネルを「クラッシュ」させずに検証を無効にする他の方法はありますか?

編集: ダイアログのボタンがクリックされたときにバインド解除もポストバックを起動します。ページは完全に 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');
    });}
4

1 に答える 1

1

ここでは、jqueryの名前間隔のイベントについて説明します...

さらに、あなたはこのようなことをすることができます

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

そして、あなたが拘束を解いているとき、あなたはすることができます

$("#mainForm").unbind("submit.something");
于 2011-05-31T11:35:49.060 に答える