Es muy simple hacerlo con JavaScript.
Código Javascript
:
Ver original(() => {
var selects = document.querySelectorAll( "select" );
for( var i = 0; i < selects.length; i++ ) {
selects[ i ].addEventListener( "change", adjustLength( ev ));
}
})();
function adjustLength( ev ) {
var select = ev.currentTarget;
var form = select.parentElement;
form.telefono_1.value = "";
if ( select.value.length === 2 ) {
form.telefono_1.setAttribute( "maxlength", "8" );
} else {
form.telefono_1.setAttribute( "maxlength", "7" );
}
}
Cómo puedes ver, en la función encapsulada lo que hacemos es poner a la escucha los cambios en los selects a través de un bucle. Es posible que tengas que ajustar el selector según tu código.
Cuando algún select cambia llama a la función "adjustLength" que lo que hace es medir la longitud del valor y en función a este limita el máximo de caracteres que se pueden añadir al input de teléfono y elimina su valor por si estuviese escrito.
Ahora lo que tendrías es que adaptar el código al tuyo. Añadiendo por ejemplo un atributo data-index para poder identificar correctamente la relación entre el select que cambia con el imput del teléfono_1 que tienes que limitar ya que al generarlos en el bucle imagino que tendrás muchos selects y muchos telefono_1.