JSFiddle - React, Tailwind, and code Playground
HTML
Skriv in clearing- och kontonummer i en följd utan mellanslag eller skiljetecken - tryck på Räkna ut IBAN.<br>
Börjar clearingnumret med 7 ska du skriva in 11 siffror, till exempel 71041234567.<br>
Börjar clearingnumret med 8 ska du skriva in max 15 siffror, till exempel 832791234567890.<br><br>
<form id="form_iban" name="form_iban" method="post" action="">
<table class="form-table" cellspacing="0">
<tbody>
<tr>
<td class="table-border-left">
<label for="account_nr" id="account_nr_label">Kontonummer</label>
</td>
<td class="table-border-right">
<input type="text" name="accountNr" size="24" maxlength="20" value="83279123456782" id="account_nr">
</td>
</tr>
<tr>
<td class="table-border-left">
<label for="msg" id="msg_label">Meddelande</label>
</td>
<td id="msg" class="table-border-right"></td>
</tr>
<tr>
<td class="table-border-left">
<label for="iban_account_nr" id="iban_account_nr_label">IBAN</label>
</td>
<td id="iban_account_nr" class="table-border-right"></td>
</tr>
</tbody>
</table>
</form>
JavaScript
$(document).ready(function() {
var acc = $("#account_nr");
acc.on("input", function() {
var m = trim(acc[0].value);
if (m.length == 0) {
return reset()
}
if (notOnlyNumbers(m)) {
return accInvalid(" " + m + " is not only numbers")
}
return validate(m)
});
});
function trim(A) {
return A.replace(new RegExp("[\\s\\-]+","g"), "")
}
function setResult(m, i) {
$("#msg")[0].innerHTML = m;
$("#iban_account_nr")[0].innerHTML = i
}
function reset() {
$("#account_nr")[0].value = "";
setResult("", "");
}
function notOnlyNumbers(m) {
for (var i = 0; i < m.length; i++) {
if ("1234567890".indexOf(m.charAt(i)) < 0) {
return true;
}
}
return false;
}
function validate(m) {
if (startsWith(m, "7")) {
if (m.length != 11) return accInvalid(" clearing 7: expected length 11");
if (m.length != 11) return accInvalid(" clearing 7: expected length 11");
if (!mod11(m)) return accInvalid(" clearing 7: checkdigit missmatch");
return setIbanOk("800000000" + m.substring(0, 4) + zeroFill(m.substring(4), 7));
}
if (startsWith(m, "8")) {
if (m.length < 10 || 15 < m.length)
return accInvalid(" clearing 8: expected length 10-15");
if (!checkAccount8Part(m.substring(0, 5)))
return accInvalid(" clearing 8: clearing(5) checkdigit missmatch");
if (!checkAccount8Part(m.substring(5)))
return accInvalid(" clearing 8: account checkdigit missmatch");
return setIbanOk("80000" + m.substring(0, 5) + zeroFill(m.substring(5), 10))
}
return accInvalid(" not clearing 7 or 8")
}
function setIbanOk(B) {
var m = getIbanPrefixAndCheck(B) + B;
setResult("Account number ok", m);
}
function...