javascript - unidos - Cómo validar el código postal de EE. UU. Con el complemento de validación de jQuery
validar codigo postal argentina (4)
Añadir un validador personalizado:
jQuery.validator.addMethod("zipcode", function(value, element) {
return this.optional(element) || /^/d{5}(?:-/d{4})?$/.test(value);
}, "Please provide a valid zipcode.");
_Si desea aceptar los espacios 1 entre el código postal, use /^/d{5}(?:[/s-]/d{4})?$/
Para el patrón.
Luego especifíquelo en sus opciones:
rules: {
...
''Address.PostalCode'': {
...
zipcode: true,
...
},
...
}
Tenga en cuenta que la biblioteca adicional extension - zipcodeUS
tiene un validador zipcodeUS
(pero a menos que esté utilizando alguno de los otros, puede que no tenga sentido incluirlo).
1 Según la especificación, los códigos postales con el formato correcto consisten en cinco (5) números o cinco (5) números seguidos por un guión (-) y cuatro (4) números adicionales. Un espacio no debería ser técnicamente aceptable, pero proporcionaré el patrón independientemente.
Estoy usando el complemento de validación de jQuery para validar mi formulario.
Quiero validar el código postal según el formato del Código postal de EE. UU.:
> 12345
> 12345-6789
> 12345 6789
Según mi código actual, la validación del código postal debe ser de un máximo de 5 y todo numérico.
Por favor vea el código a continuación:
<script src="~/Scripts/js/jquery.validate.js"></script>
<script>
$().ready(function () {
// validate signup form on keyup and submit
$("#locationSetup").validate({
rules: {
''Address.AddressStreet'': "required",
''Address.City'': "required",
''Address.State.Country.CountryIsoCode'': "required",
''Address.State.SubnationalIsoCode'': "required",
''Address.PostalCode'': {
required: true,
minlength: 5,
maxlength: 5,
digits: true
}
},
messages: {
''Address.AddressStreet'': "Please enter your Street Address!",
''Address.City'': "Please select your City!",
''Address.State.Country.CountryIsoCode'': "Please select your Country!",
''Address.State.SubnationalIsoCode'': "Please select your State!",
''Address.PostalCode'': {
required: "Please enter your Postal Code!",
minlength: "Your Postal Code must be 5 numbers!",
maxlength: "Your Postal Code must be 5 numbers!",
digits: "Your Postal Code must be 5 numbers!"
}
}
});
});
</script>
@using (Html.BeginForm(Model.Step.ToString(), "Provision", FormMethod.Post, new Dictionary<string, object> { { "id", "locationSetup" } }))
<table width="100%" id="locInfo">
<colgroup>
<col width="30%" />
<col />
</colgroup>
<tr>
<th><label>@AddressResource.COUNTRY_LABEL_TEXT:</label> <span class="redtext">(Required)</span></th>
<td>
@* @Html.HiddenFor(m => m.Address.State.Country.CountryIsoCode)*@
@Html.DropDownListFor(m => m.Address.State.Country.CountryIsoCode, ProvisioningHubProxy.GetCountriesList(),
htmlAttributes: new { @id = "Countries", @name = "Countries" })
</td>
</tr>
<tr>
<th> <label>@AddressResource.STATES_LABEL_TEXT:</label><span class="redtext">(Required)</span></th>
<td> @Html.DropDownListFor(m => m.Address.State.SubnationalIsoCode, ProvisioningHubProxy.GetStatesList(),
htmlAttributes: new { @id = "States", @name = "States" })</td>
</tr>
<tr>
<th><label>@AddressResource.CITY_LABEL_LABEL_TEXT:</label><span class="redtext">(Required)</span></th>
<td> @Html.TextBoxFor(m => m.Address.City, htmlAttributes: new { @name = "City", @id = "City" })</td>
</tr>
<tr>
<th> <label>@AddressResource.STREET_NAME_LABEL_TEXT:</label><span class="redtext">(Required)</span></th>
<td>@Html.TextBoxFor(m => m.Address.AddressStreet, htmlAttributes: new { @name = "StreetName", @id = "StreetName" })</td>
</tr>
<tr>
<th><label>@AddressResource.US_POSTAL_CODE_LABEL_TEXT:</label><span class="redtext">(Required)</span></th>
<td>@Html.TextBoxFor(m => m.Address.PostalCode, htmlAttributes: new { @name = "ZipCode", @id = "ZipCode", @required = "required" })</td>
</tr>
</table>
}
Por favor recomiende.
Las rutinas de validación de código postal se proporcionan en método-mensual.js, pero me preguntaría por qué solicita información de país si va a invalidar el formulario para cualquier país que no sea los Estados Unidos. Recuerde que solo alrededor del 5% de la población mundial utiliza un código postal de EE. UU. Le recomendaría que realice las rutinas de validación de códigos postales en función del país seleccionado por el usuario.
Puede definir un validador personalizado:
jQuery.validator.addMethod(''zipcode'', function(value, element) {
return this.optional(element) || !!value.trim().match(/^/d{5}(?:[-/s]/d{4})?$/);
}, ''Invalid zip code'');
Entonces úsalo así
<input class="zipcode"/>
Simplemente incluya el archivo additional-methods.js
zipcodeUS
y use la regla zipcodeUS
.
$("#locationSetup").validate({
rules: {
// rules,
''Address.PostalCode'': {
required: true,
zipcodeUS: true // <-- use it like this
}
},
....
Si no desea incluir el archivo additional-methods.js
, puede copiar el siguiente método en su código ...
jQuery.validator.addMethod("zipcodeUS", function(value, element) {
return this.optional(element) || //d{5}-/d{4}$|^/d{5}$/.test(value)
}, "The specified US ZIP Code is invalid");