Estamos teniendo problemas con el registro de algunos clientes porque una vez ponen el código postal y la ciudad, se despreocupan de especificar la provincia destino en el desplegable. Esto provoca errores porque es común que dejen la provincia por defecto (A Coruña) o pongan un CP de Baleares escogiendo una provincia peninsular, con lo que los gastos de envío se descuadran complemente y hay que andar cancelando pedidos, haciendo gestiones de devolución de pagos y demás.
Hemos estado buscando un módulo que rellene automáticamente los campos localidad y provincia a partir del código postal, pero sin suerte. Navegando por internet encontramos una solución en el (foro oficial) que involucra programación, mediante el siguiente código:
$(document).ready(function(){ //when the user clicks off of the zip field: $('#postcode').keyup(function(){ if($(this).val().length == 4){ var postcode = $(this).val(); var city = ''; var state = ''; var country = 'DK'; //make a request to the google geocode api $.getJSON('http://maps.google.com/maps/api/geocode/json?components=country:'+country+'|postal_code:'+postcode+'&sensor=false') .success(function(response){ //find the city and state var address_components = response.results[0].address_components; $.each(address_components, function(index, component){ var types = component.types; $.each(types, function(index, type){ if(type == 'locality') { city = component.long_name; } if(type == 'locality') { state = component.short_name; } }); }); //pre-fill the city and state var cities = response.results[0].postcode_localities; if(cities) { //turn city into a dropdown if necessary var $select = $(document.createElement('select')); console.log(cities); $.each(cities, function(index, locality){ var $option = $(document.createElement('option')); $option.html(locality); $option.attr('value',locality); if(city == locality) { $option.attr('selected','selected'); } $select.append($option); }); $select.attr('id','city'); $('#city_wrap').html($select); } else { $('#city').value(city); } $('#state').val(state); }); } }); });
Evidentemente habría que personalizarlo para España con una longitud de 5 dígitos y el ES para el país, pero mi pregunta es: exactamente ¿dónde habría que insertar este código, teniendo en cuenta que nuestros clientes pueden registrarse tanto desde el formulario de registro estándar como desde un formulario dentro de un módulo de "one page checkout"? ¿Debe ir embebido en alguna etiqueta?
URL del sitio: Contenido solo visible a usuarios registrados
Gracias por la respuesta, pero no soluciona el problema porque aunque la provincia es obligatoria, el formulario ya tiene como predeterminada la primera de la lista desplegable, que es A Coruña; es decir, nunca se queda en blanco y hay clientes que ni siquiera se molestan en cambiarla.
Necesito o bien la modificación para que se cambie directamente según el CP, o bien que de alguna manera pueda poner una provincia en blanco para que no se complete el registro hasta que el cliente la escoja manualmente.
HOla
El código que envías es código javascript (requiere jquery) podrías insertarlo en algún archivo js que ya carga tu theme, pero evidentemente tienes que adecuarlo por ejemplo con los IDs de los campos, etc, se puede complicar, desde este foro sólo te podemos dar generalidades sobre este tema de programación.
Has evaluado quitar el código postal y dejar sólo la provincia?, creo que esto sería más intuitivo.
Saludos.
El código postal es una exigencia de uno de nuestros transportistas, así que la solución provisional que hemos encontrado es editar una de las provincias deshabilitadas como "---" (lo que ahora sale por defecto) y confiar en que los clientes al verlo así lo cambien. Gracias.