我有一个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');
});}
答案 0 :(得分:1)
HERE解释了jquery名称间隔事件......
此外,你可以做这样的事情
$("#mainForm").bind("submit.something", function(e){/*...*/});
如果你解除绑定,你可以做到
$("#mainForm").unbind("submit.something");