Estoy trabajando con Googles Api Places para sugerencias de autocompletado de direcciones. Este es mi código de trabajo simple:
<!DOCTYPE html> <html> <body> <form> <input id="customerAddress" name="customerAddress" required autocomplete="off" /> <input id="zip" name="zip" required readonly /> <input id="city" name="city" required readonly /> </form> <script src="https://maps.googleapis.com/maps/api/js?key=MY_API_KEY&callback=initAutocomplete&libraries=places" async ></script> <script> let autocomplete; function initAutocomplete() { autocomplete = new google.maps.places.Autocomplete(document.querySelector("#customerAddress"), { componentRestrictions: { country: ["de", "DE"] }, fields: ["address_components", "geometry"], types: ["address"], }); autocomplete.addListener("place_changed", fillInAddress); } function fillInAddress() { const place = autocomplete.getPlace(); var address = "" var streetNumber = "" for (const component of place.address_components) { const componentType = component.types[0]; switch (componentType) { case "route": { address = component.long_name; break; } case "street_number": { streetNumber = component.long_name break; } case "postal_code": { document.querySelector("#zip").value = component.long_name; break; } case "locality": document.querySelector("#city").value = component.long_name; break; } } document.querySelector("#customerAddress").value = address +" "+streetNumber } </script> </body> </html>Ahora me daría cuenta de la siguiente situación:
el cliente debe escribir su dirección en el campo "dirección del cliente" para recibir las sugerencias, pero la dirección debe incluir un número de calle. ¿Cómo puedo restringir esto?
El formulario solo debe poder enviarse si el cliente seleccionó una sugerencia de la lista de autocompletar. Si él / ella escribe manualmente una dirección, que no es de la lista de autocompletar, tiene que ser un error
Bueno, creo que la mejor solución sería tener una entrada oculta separada donde colocaría la dirección seleccionada contra la que ejecutaría la validación, si no está definida, simplemente devuelve un error.
En cuanto a tener número de calle, también puede ejecutar la validación del lugar seleccionado. Si ha seleccionado tipo street_number es válido, si no no lo es.
No estoy seguro de si puede deshabilitar Google para restringir los resultados de búsqueda solo a direcciones con número de calle.