Formato número de CUIT al tipear en un formulario

¿Cómo puedo hacer para que al ingrear en el campo CUIT de un formulario escriban los numeros y vaya agregando los guiones a medida que escriban?

Por otro lado que no deje escribir mas que 11 dígitos (que entiendo es la cantidad de digitos de cualquier número de CUIT).

jQuery por ejemplo

$("#no").on('keyup', function()
{
  var value = $(this).val().split('')
  var output = '' 
  for (var i = 0; i < value.length; i++) {
    switch (i) {
      case 0: {
        output += '(' + value[i];
        break;
      }
      case 2: {
        output += value[i] + ') ';
        break;
      }
      case 5: {
        output += value[i] + ' ';
        break;
      }
      default: output += value[i]
    }    
  }
  if (value.length >= 10) 
    $('#no_span').html(output)
  else 
    $('#no_span').html('')
});
1 me gusta

es un comienzo, el tema es que este jQuery lo escribe al lado.
Seguiré investigando,

Gracias Wanderlust!

Encontré este

pero tiene un problema, si sigo agregand numeros, borra y empieza de nuevo.

Encontré otro que lo adapté y creo que puede andar:

1 me gusta

Si, fue un ejemplo para que sigas vos.

1 me gusta

Yo lo veo perfecto a esta solucion :wink: quiza una posible mejora es:

<input type="number" pattern="[0-9]*" inputmode="numeric">

Para que en mobile te abra el teclado numerico directamente.

Va un pequeño aporte más:

Input:

<input type="number" name="numero" id="numero" maxlength="14" inputmode="numeric"/>

Jquery:

$("#numero").on("input", function() {
      let numero = $(this).val();
      numero = numero.replace(/-/g, "");
      if (numero.length > 2) {
        numero = numero.slice(0, 2) + "-" + numero.slice(2);
      }
      if (numero.length > 11) {
        numero = numero.slice(0, 11) + "-" + numero.slice(11);
      }
      $(this).val(numero);
    });
2 Me gusta

Disculpen mi ignorancia, pero ¿donde pongoe el jquery en wordpress?

:grimacing:

Lo podrias llamar antes de agregar el script que armo @0xAlm0ck asi:

<script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>

Si entendi bien tu pregunta.

Sorry la demora.

Es posible crear un Js custom, ejemplo: cuit.js y hacer un equeue del archivo. Incluso puede servir para cargarlo solo en la página o template y no en todo el sitio.
Ejemplo con página “contacto”:

if (is_page('contacto'){
  // Hacer enqueue
}

En el theme (desconozco la estructura de archivos), se puede crear algo así: /assets/js/cuit.js y en el caso que estés usando la estructura original de wp para hacer el enqueue agregás lo siguiente al functions.php (verificar si ya existe una función de enqueue previa):

function my_enqueue_scripts() {
    wp_enqueue_script( 'cuit-js', get_template_directory_uri() . '/assets/js/cuit.js', array(), filemtime( get_template_directory() . '/assets/js/cuit.js' ), true );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts' );

@mparraud avisame cualquier cosa y lo vemos.

1 me gusta