JSFiddle - React, Tailwind, and code Playground
HTML
<p>Ingrese el numero de patente</p>
<input type="text" placeholder="USW 621" id="plate" class="input-small">
<button id="boton" class="btn btn-primary" >Procesar</button>
<br /> <br />
<p>El digito verificador es:<input type="text" readonly id="resultado" /></p>
<p> Ingrese en la consulta de patentes de la AGIP </p>
<p> Tenga en cuenta que debe seleccionar en la parte de abajo del primer formulario que ud. cuenta con el digito verificador.</p>
<p> Los datos del titular salen cuando se le da "Imprimir" al estado de cuenta o deuda</p>
<a href="https://lbserver02.agip.gob.ar/ConsultaPat/">Ir a la consulta de AGIP</a>
JavaScript
$( function () {
var letters = {
"A": "14",
"B": "01",
"C": "00",
"D": "16",
"E": "05",
"F": "20",
"G": "19",
"H": "09",
"I": "24",
"J": "07",
"K": "21",
"L": "08",
"M": "04",
"N": "13",
"O": "25",
"P": "22",
"Q": "18",
"R": "10",
"S": "02",
"T": "06",
"U": "12",
"V": "23",
"W": "11",
"X": "03",
"Y": "15",
"Z": "17",
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9"
}
function parsePlate(plate){
plate = plate.replace(' ','');
var crypted = "",
even = 0,
odd = 0;
for (var idx = 0; idx < plate.length; idx++) {
crypted += letters[plate[idx]];
}
for (var idx = crypted.length - 1; idx >= 0; idx--) {
if(idx % 2 == 1) {
odd += crypted[idx]*1;
} else {
even += crypted[idx]*1;
}
}
//if (even > 10) even = (even+"")[0]*1+(even+"")[1]*1;
//if (odd > 10) odd = (odd+"")[0]*1+(odd+"")[1]*1;
// Ahora hay que "reducir" las dos partes hasta que sean de un solo digito.
// el algoritmo no es muy claro respecto de lo que hay que hacer, pero va bien
while( even > 9 ) {
var tmp = 0;
for (idx = (even+"").length - 1; idx >= 0; idx--) {
tmp += (even+"")[idx]*1;
}
even = tmp;
}
while( odd > 9 ) {
var tmp = 0;
for (idx = (odd+"").length - 1; idx >= 0; idx--) {
tmp += (odd+"")[idx]*1;
}
odd = tmp;
}
return even+""+odd;
}
$('#boton').click( function () {
var entrada = $('#plate').val();
var res = parsePlate(entrada);
//$('#resultado').text(res);
$('#resultado').val(res);
return false;
});
});