javascript limit text input characters

前端 未结 5 1264
攒了一身酷
攒了一身酷 2020-12-22 06:30

I am wanting to restrict the input characters for a text box to [a-z0-9_-]. However whenever if do this buttons like backspace and the arrow keys don\'t work. I have found s

5条回答
  •  清酒与你
    2020-12-22 07:34

    Yes you can limit the input of characters. For example create a function that checks what is going on, return true if everything is OK and false if not:

    // return true for 1234567890A-Za-z - _
    function InputCheck(e) {
        if ((e.shiftKey && e.keyCode == 45) || e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
            if (e.which == 45 || e.which == 95 || (e.which >= 65 && e.which <= 90) || (e.which >= 97 && e.which <= 122))
                return true;
            return false;
        }
        return true;
    }
    

    once you have the function, hook it into you input (this is with jQuery):

    $('#InputID').keypress(InputCheck);
    

    You can make as complicated a check as you want, for example this will allow for USD money values:

    function InputCheck(e) {
        if ((e.shiftKey && e.keyCode == 45) || e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57) && e.which != 46 && e.which != 36) {
            return false;
        }
        // . = 46
        // $ = 36
        var text = $(this).val();
    
        // Dollar sign first char only
        if (e.which == 36 && text.length != 0) {
            return false;
        }
    
        // Only one decimal point
        if (e.which == 46 && text.indexOf('.') != -1) {
            return false;
        }
    
        // Only 2 numbers after decimal
        if (text.indexOf('.') != -1 && (text.length - text.indexOf('.')) > 2) {
            return false;
        }
    
        return true;
    }
    

提交回复
热议问题