Auto-rellenar provincia a partir de código postal  

 
Raquel
 Raquel
Usuario eminente

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

Citar
Respondido : 30/11/2016 1:13 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Raquel.

Tienes la opción de añadirlo como obligatorio.
.- Accede a Localización -> Países
.- Selecciona España
.- En las opción Campos obligatorios para la dirección selecciona la opción Provincia
.- Añade las opciones Código_iso y Nombre y guarda

Un saludo

Si nuestra ayuda te sirve déjanos tu testimonio y mejora así el posicionamiento de tu web:
Enviar Testimonio
¿Has probado WpCenter?, es nuestro nuevo manager de WordPress desde el propio cPanel sin necesidad de acceder a tu administración, te permitirá configurar actualizaciones automáticas y mucho más.
Pruébalo accediendo a tu cPanel > Aplicaciones Webempresa > WpCenter
¡Gracias!.

ResponderCitar
Respondido : 30/11/2016 2:40 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Raquel
 Raquel
Usuario eminente

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.

ResponderCitar
Respondido : 30/11/2016 4:39 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

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.

Si nuestra ayuda te sirve déjanos tu testimonio y mejora así el posicionamiento de tu web:
Enviar mi Testimonio
¡Gracias!.

ResponderCitar
Respondido : 30/11/2016 6:02 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Raquel
 Raquel
Usuario eminente

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.

ResponderCitar
Respondido : 01/12/2016 1:55 pm

Por favor Iniciar Sesión o Registro