JSFiddle - React, Tailwind, and code Playground
HTML
<form>
Number to words<BR>
<BR>Number/Número
<INPUT NAME="Number" TYPE="text" SIZE="60" value="2,658.12"/> <BR><TEXTAREA NAME="Spanish" ROWS="5" COLS="90"></TEXTAREA><BR>
</form>
JavaScript
$(function() {
$('input[name=Number]').on('keyup change blur',function() {
Calculate( this.form );
});
Calculate( $('form')[0] );
});
function FixSpaces(s){
//returns a string with no double spaces inside
var t='';
for(var i=0; i<s.length; i++){
if (i>0){
if (!((s.substring(i-1,i)==' ')&(s.substring(i,i+1)==' ')))
t=t+s.substring(i,i+1);
}else
t=t+s.substring(i,i+1);
}
return t;
}
function Calculate(form) {
//fill forms with text
var Ner = form.Number.value;
form.Spanish.value = NumerosPalabras(Ner);
}
function REPLICATE(n, c){
//returns n times char c
var t='';
for(var i=1; i<=n; i++)
t=t+c;
return t;
}
function NumerosPalabras(s) {
//Spanish words for numbers
s = s.replace(',','');
var a,b,c,j,orlen,result=' ',
cents = s.split('.')[1] || '00',
s = s.split('.')[0] || s;
if (s=='0') {return ('CERO');}
orlen=s.length;
if ((s.length % 3)>0)
s=' '+s;
if ((s.length % 3)>0)
s=' '+s;
for (var i = 0; i < s.length; i=i+3) {
j=s.length-i-1;
a=s.substring(j, j+1);
b=s.substring(j-1, j);
c=s.substring(j-2, j-1);
if (a!=' '){
if ((i==3)&(c+b+a!=',000') ) {result='MIL '+result;}
else if (((i==6)&(c+b+a!=',000') ) &(orlen==7)&(a=='1')) {result='MILLÓN '+result;}
else if ((i==6)&(c+b+a!=',000') ) {result='MILLONES '+result;}
else if ((i==9)&(c+b+a!=',000') ) {result='MIL MILLONES '+result;}
}
if ((b!=1) | (b==' ')){
if (a==1){result='UNO '+result;}
else if (a==2){result='DOS '+result;}
else if (a==3){result='TRES '+result;}
else if (a==4){result='CUATRO '+result;}
else if (a==5){result='CINCO '+result;}
else if (a==6){result='SEIS '+result;}
else if (a==7){result='SIETE '+result;}
else if (a==8){result='OCHO '+result;}
else if (a==9){result='NUEVE '+result;}
}
if ((b!=' ')&(b!=',0')){
if ((b==1) | (b==2)){
if (b+a==10){result='DIEZ '+result;}
else if (b+a==11){result='ONCE '+result;}
else if (b+a==12){result='DOCE...