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...