Ignoring input characters on key down

后端 未结 2 757
梦如初夏
梦如初夏 2021-01-04 20:08

I want to ignore certain characters in my phone input, so that the database just has digits. I know I can do this easy on server side (using PHP) but I am trying to understa

相关标签:
2条回答
  • 2021-01-04 20:22

    I would strongly advise against changing the user's input or otherwise prevent them from typing something while they're doing it. It is confusing and leads to a bad user experience.

    Ideally, you should keep your server-side validation and then use HTML5 features such as these:

    <input type="number" /> Allows only numbers
    <input type="text" pattern="[0-9. -]*" /> Allows numbers, spaces, periods and hyphens
    <input type="text" required /> Specifies a required field
    

    Modern browsers will prevent the form from being submitted and present helpful error message to the user (which you can customise with a title attribute).

    However, for general reference, return false; doesn't necessarily cancel the event. To do that, you should use this:

    // if you haven't already:
    e = e || window.event;
    // to cancel the event:
    if( e.preventDefault) e.preventDefault();
    return false;
    
    0 讨论(0)
  • 2021-01-04 20:42

    I had to do something similar for a project I'm working on. This is how I did it.

    // prevent users from typing alpha/ symbol characters on select fields
    $("#modal-region").on("keydown", "#markdown, #sku", function(e) {
    
        var key = e.which;
        // when a keydown event occurs on the 0-9 keys the value 
        // of the "which" property is between 48 - 57 
        // therefore anything with a value greater than 57 is NOT a numeric key
    
        if ( key > 57) {
            e.preventDefault();
    
        } else if (key < 48) {
    
        // we don't want to disable left arrow (37), right arrow (39), delete (8) or tab (9)
        // otherwise the use cannot correct their entry or tab into the next field!
    
            if (key != 8 && key != 9 && key != 37 && key != 39 ) {
                e.preventDefault();
            }
        }
    
    });
    
    0 讨论(0)
提交回复
热议问题