How to force input to only allow Alpha Letters?

后端 未结 9 1499
长发绾君心
长发绾君心 2020-12-01 06:52

using jQuery here, however unable to prevent numbers from being typed into the input field

http://codepen.io/leongaban/pen/owbjg

Input



        
相关标签:
9条回答
  • 2020-12-01 07:11

    The property event.key gave me an undefined value. Instead, I used event.keyCode:

    function alphaOnly(event) {
      var key = event.keyCode;
      return ((key >= 65 && key <= 90) || key == 8);
    };
    

    Note that the value of 8 is for the backspace key.

    0 讨论(0)
  • 2020-12-01 07:14

    Nice one-liner HTML only:

     <input type="text" id='nameInput' onkeypress='return ((event.charCode >= 65 && event.charCode <= 90) || (event.charCode >= 97 && event.charCode <= 122) || (event.charCode == 32))'>
    
    0 讨论(0)
  • 2020-12-01 07:18

    If your form is PHP based, it would work this way within your " <?php $data = array(" code:

        'onkeypress' => 'return /[a-z 0-9]/i.test(event.key)', 
    
    0 讨论(0)
  • 2020-12-01 07:20

    Rather than relying on key codes, which can be quite cumbersome, you can instead use regular expressions. By changing the pattern we can easily restrict the input to fit our needs. Note that this works with the keypress event and will allow the use of backspace (as in the accepted answer). It will not prevent users from pasting 'illegal' chars.

    function testInput(event) {
       var value = String.fromCharCode(event.which);
       var pattern = new RegExp(/[a-zåäö ]/i);
       return pattern.test(value);
    }
    
    $('#my-field').bind('keypress', testInput);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <label>
       Test input:
       <input id="my-field" type="text">
    </label>

    0 讨论(0)
  • 2020-12-01 07:23

    A lot of the other solutions that use keypress will not work on mobile, you need to use input.

    html

    <input type="text" id="name"  data-value="" autocomplete="off" spellcheck="true" placeholder="Type your name" autofocus />
    

    jQuery

    $('#name').on('input', function() {
        var cursor_pos = $(this).getCursorPosition()
        if(!(/^[a-zA-Z ']*$/.test($(this).val())) ) {
            $(this).val($(this).attr('data-value'))
            $(this).setCursorPosition(cursor_pos - 1)
            return
        }
        $(this).attr('data-value', $(this).val())
    })
    
    $.fn.getCursorPosition = function() {
        if(this.length == 0) return -1
        return $(this).getSelectionStart()
    }
    $.fn.setCursorPosition = function(position) {
        if(this.lengh == 0) return this
        return $(this).setSelection(position, position)
    }
    $.fn.getSelectionStart = function(){
      if(this.lengh == 0) return -1
      input = this[0]
      var pos = input.value.length
      if (input.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveEnd('character', input.value.length)
        if (r.text == '') 
        pos = input.value.length
        pos = input.value.lastIndexOf(r.text)
      } else if(typeof(input.selectionStart)!="undefined")
      pos = input.selectionStart
      return pos
    }
    $.fn.setSelection = function(selectionStart, selectionEnd) {
      if(this.lengh == 0) return this
      input = this[0]
      if(input.createTextRange) {
        var range = input.createTextRange()
        range.collapse(true)
        range.moveEnd('character', selectionEnd)
        range.moveStart('character', selectionStart)
        range.select()
      }
      else if (input.setSelectionRange) {
        input.focus()
        input.setSelectionRange(selectionStart, selectionEnd)
      }
      return this
    }
    
    0 讨论(0)
  • 2020-12-01 07:26
    <input type="text" name="field" maxlength="8"
        onkeypress="return onlyAlphabets(event,this);" />
    
    function onlyAlphabets(e, t) {
                try {
                    if (window.event) {
                        var charCode = window.event.keyCode;
                    }
                    else if (e) {
                        var charCode = e.which;
                    }
                    else { return true; }
                    if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123))
                        return true;
                    else
                        return false;
                }
                catch (err) {
                    alert(err.Description);
                }
            }
    
    0 讨论(0)
提交回复
热议问题