Javascript动态输入掩码

时间:2014-10-01 07:17:18

标签: javascript jquery

我想知道是否有一个插件会为输入设置掩码,具体取决于我已在那里输入。

例如,如果我将输入的掩码设置为0-4的数字,然后将“1”写入输入,我希望能够只写“0”,“2”,“3”,“4”。 我已经尝试过以下掩码:

http://digitalbush.com/projects/masked-input-plugin/

但是我只能实现这一点,写入字符后整个输入清零,或者插入符号输入后面,或者我无法写入任何内容。 这是我尝试实现我想要的目标:

jQuery.mask.definitions['x'] = '[123456789]';
jQuery('#inputLabel').mask("x, x, x, x, x, x, x");

如果我在输入中输入内容,我试过这个: 再设一次面具

jQuery.mask.definitions['x'] = returnDistinctTab(); //returnDistinctTab return tab without character which I have already input to the input.
var text = jQuery("#inputLabel").val();
text.replace('_', 'x');
jQuery('#inputLabel').mask('text');

如果有人知道我做错了什么,或者知道哪种面具适合我的情况,我将非常感激!!

1 个答案:

答案 0 :(得分:2)

您可以使用oninput event,并编写一个简单的函数来强制列表中的唯一值:

<script>
    function verifyInput(txt, mask) {
        var res = '';
        for (var i = 0; i < txt.length; i++) {
            var char = parseInt( txt[i] );
            if (mask.indexOf(char) > -1 && res.indexOf(char) === -1)
                res += char;

        }
        return res;
    }
</script>

<input type="text" id="unique-numbers" oninput="this.value=verifyInput(this.value, [0, 1, 2, 4])" />

它可能比jQuery插件更快,也更容易维护(你不仅限于任何东西)。

相关问题