我想将我的PHP代码转换为JavaScript。该代码的目的是将数字读入句子。问题是这个句子不会显示在输入文本中。这是代码:
JavaScript
function pembilang(angka) {
var bilangan =[
'',
'SATU',
'DUA',
'TIGA',
'EMPAT',
'LIMA',
'ENAM',
'TUJUH',
'DELAPAN',
'SEMBILAN',
'SEPULUH',
'SEBELAS'
];
if (angka < 12) {
$('#NILAI_HURUF').val(bilangan[angka]);
} else if (angka < 20) {
$('#NILAI_HURUF').val(bilangan[angka - 10] + ' BELAS');
} else if (angka < 100) {
hasil_bagi == (angka / 10);
hasil_mod == angka % 10;
$('#NILAI_HURUF').val(trim(sprintf('%s PULUH %s', bilangan[hasil_bagi], bilangan[hasil_mod])));
} else if (angka < 200) {
$('#NILAI_HURUF').val('SERATUS %s', terbilang(angka - 100));
} else if (angka < 1000) {
hasil_bagi == (angka / 100);
hasil_mod == angka % 100;
$('#NILAI_HURUF').val(trim(sprintf('%s RATUS %s', $bilangan[hasil_bagi], terbilang(hasil_mod))));
} else if (angka < 2000) {
$('#NILAI_HURUF').val(trim(sprintf('SERIBU %s', terbilang(angka - 1000))));
} else if (angka < 1000000) {
hasil_bagi == (angka / 1000);
hasil_mod == angka % 1000;
$('#NILAI_HURUF').val(sprintf('%s RIBU %s', terbilang(hasil_bagi), terbilang(hasil_mod)));
} else if (angka < 1000000000) {
hasil_bagi == (angka / 1000000);
hasil_mod == angka % 1000000;
$('#NILAI_HURUF').val(trim(sprintf('%s JUTA %s', terbilang(hasil_bagi), terbilang(hasil_mod))));
} else if (angka < 1000000000000) {
hasil_bagi == (angka / 1000000000);
hasil_mod == fmod(angka, 1000000000);
$('#NILAI_HURUF').val(trim(sprintf('%s MILYAR %s', terbilang(hasil_bagi), terbilang(hasil_mod))));
} else if (angka < 1000000000000000) {
hasil_bagi == angka / 1000000000000;
hasil_mod == fmod(angka, 1000000000000);
$('#NILAI_HURUF').val(trim(sprintf('%s TRILIYUN %s', terbilang(hasil_bagi), terbilang(hasil_mod))));
} else {
alert('Too many digits.');
}
}
然后这就是我输入数字的地方:
html
<input onkeypress="return isNumberKey(event);" onChange="pembilang(this.value);" class="form-control" placeholder="Masukan nilai angka..." name="NILAI_ANGKA_AKHIR" type="number" required>
这就是句子必须显示的地方:
html
<input id="NILAI_HURUF" value="" class="form-control disabled" placeholder="Masukan no induk..." name="NILAI_HURUF" type="text" required>
好吧,我自己解决了。
我只是在JavaScript函数中添加了一个这样的变量:
angka = angka;
解决方案是从phpjs.org/functions/ssprintf实现/添加JavaScript模块
JavaScript
function pembilang(angka) {
var angka = angka;
var bilangan =[
'',
'SATU',
'DUA',
'TIGA',
'EMPAT',
'LIMA',
'ENAM',
'TUJUH',
'DELAPAN',
'SEMBILAN',
'SEPULUH',
'SEBELAS'
];
if (angka < 12) {
$('#NILAI_HURUF').val(bilangan[angka]);
} else if (angka < 20) {
$('#NILAI_HURUF').val(bilangan[angka - 10] + ' BELAS');
} else if (angka < 100) {
hasil_bagi = Math.floor(angka / 10);
hasil_mod = angka % 10;
// example 4: sprintf("%s", 123456789012345);
var x = sprintf("%s PULUH %s", bilangan[hasil_bagi], bilangan[hasil_mod]);
$('#NILAI_HURUF').val(x);
} else if (angka < 101) {
var x = sprintf("SERATUS %s", bilangan[angka - 100]);
$('#NILAI_HURUF').val(x);
}else {
alert('Maksimal nilai 100.');
}
}