Asumo todas las reglas de validación deben pasar, lo que significa que su minlength
fallará siempre si tiene una longitud de 4.
Además, se está perdiendo una $
antes ("#PostalCode").length
.
También esta línea establece el valor de #Country
.
$("#Country").val("Aus")
Usted quiere conseguir el valor, y comparar a "Aus"
.
$("#Country").val() === "Aus"
Trate de no incluir minlength
, y el cambio de la función personalizada.
Prueba esto:
EDIT: cambiado para que usted tiene 2 validadores.
se verifica que el condado es Australia y la longitud del valor es al menos 4.
El otro verifica que el condado es no Australia y la longitud del valor es al menos 5.
$.validator.addMethod("AusZip", function(value, element) {
var isAus = $("#Country").val() === "Aus";
if (isAus && value.length < 4) {
return false;
} else return true;
}, "Australian Zip Code Must Be at least 4 Digits");
$.validator.addMethod("NonAusZip", function(value, element) {
var isNotAus = $("#Country").val() !== "Aus";
if (isNotAus && value.length < 5) {
return false;
} else return true;
}, "Zip Code Must Be at least 5 Digits");
$('form').validate({
rules: {
PostalCode: {
required: true,
AusZip: true,
NonAusZip: true
}
}
});
O si usted no necesita un mensaje de validación personalizado basado en el país, usted puede hacer esto:
$.validator.addMethod("GlobalZip", function(value, element) {
var isAus = $("#Country").val() === "Aus";
if ((isAus && value.length < 4) || value.length < 5) {
return false;
} else return true;
}, "Zip Code is not long enough");
$('form').validate({
rules: {
PostalCode: {
required: true,
GlobalZip: true
}
}
});
así que si elimino "minlength" de las reglas de PostalCode ¿todavía se necesitará una duración mínima de 5 para todas las demás? –
esto devuelve un error "errorPrimera Palabra" no está definido por algún motivo en la consola. –
Debería. Darle una oportunidad. Esta línea verifica * Es Australia y menos de cuatro, O es menor que cinco *. '(isAus && $ pCode.length <4) || $ pCode.length <5 ' – user113716