How to insert space every 4 characters for IBAN registering?

前端 未结 9 1717
感情败类
感情败类 2020-11-29 03:28

I\'m really new in JavaScript and I would like to add to my input text, space insertion for IBAN account registering.

9条回答
  •  清歌不尽
    2020-11-29 03:52

    Using plain-JavaScript, I'd suggest:

    function space(el, after) {
        // defaults to a space after 4 characters:
        after = after || 4;
    
        /* removes all characters in the value that aren't a number,
           or in the range from A to Z (uppercase): */
        var v = el.value.replace(/[^\dA-Z]/g, ''),
        /* creating the regular expression, to allow for the 'after' variable
           to be used/changed: */
            reg = new RegExp(".{" + after + "}","g")
        el.value = v.replace(reg, function (a, b, c) {
            return a + ' ';
        });
    }
    
    var el = document.getElementById('iban');
    el.addEventListener('keyup', function () {
        space(this, 4);
    });
    

    JS Fiddle demo.

    Somewhat belatedly, my rewrite of the above to handle strings, rather than DOM nodes:

    function space(str, after) {
        if (!str) {
            return false;
        }
        after = after || 4;
        var v = str.replace(/[^\dA-Z]/g, ''),
            reg = new RegExp(".{" + after + "}", "g");
        return v.replace(reg, function (a) {
            return a + ' ';
        });
    }
    
    var el = document.getElementById('iban');
    el.addEventListener('keyup', function () {
        this.value = space(this.value, 4);
    });
    

    JS Fiddle demo.

    References:

    • addEventListener().
    • JavaScript regular expressions.

提交回复
热议问题