JavaScript如何在字符串的开头只允许一个符号

时间:2014-03-07 15:01:33

标签: javascript string events

我想允许用户只在input中添加一种种符号(字符),并且仅在字符串的开头

当然关于keyDown / keyUp事件。我正在寻找最快的解决方案。

1 个答案:

答案 0 :(得分:1)

假设您有像

这样的输入
<input type="text" id="text">

您可以使用以下代码

$(function(){

    var alreadyIn = 0;

    var chars = [33, 64, 35]; // Place here the codes for accepted chars (!@#$ etc)

    $("#text").on('keypress', function(e) {

        var code = (e.keyCode ? e.keyCode : e.which);

        if(chars.indexOf(code) != -1) {

            if($(this).caret() != 0){return false;}

            if(alreadyIn){return false;}

            alreadyIn++

        } else {

            if(alreadyIn && $(this).caret() == 0){return false;}
        }

        return true;    

    }).on('keyup', function(e){ // Keyup event to catch backspace and delete

        var code = (e.keyCode ? e.keyCode : e.which);

        if(code == 8 || code == 46) {

            var current = $(this).val();

            var instances = 0;

            chars.forEach(function(char) {

                if(current.search(String.fromCharCode(char)) > -1){instances++;}
            });

            alreadyIn = instances == 0 ? 0 : 1;
        }

    }).bind("cut copy paste", function(e) { // Do not allow cut copy paste in field

        e.preventDefault(); 
    }); 

});

修改

我已经更新了答案。你还必须包括jquery插入插件。你可以找到它here