0
我有一個jQuery對話框,裏面有更新面板。爲了讓事情更復雜一點,我使用jQuery驗證。jQuery解除綁定更新面板
爲了禁用驗證,我在beforeClose
中使用了jQuery 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');
});}
解除綁定導致所有的點擊事件被解除綁定... – Rafay 2011-05-31 11:12:22
嘗試命名空間事件... – Rafay 2011-05-31 11:26:54
@ 3nigma你能舉個例子嗎?謝謝 – ch3r1f 2011-05-31 11:30:48