Skip to content Skip to sidebar Skip to footer

Disable Zero As First Letter In

Below code disables 0 as the first character in #foo. However, you can bypass this by typing 123, then drag to select 123 and putting 0. (or ctrl+a on input) Is there a way to bloc

Solution 1:

I would handle the input, propertychange, and paste events. Then use regex to match for anything that begins with 0 and replace the current value with the value minus the leading 0.

http://jsfiddle.net/SeanWessell/5qxwpv6h/

$('input ').on('input propertychange paste', function (e) {
    var val = $(this).val()
    var reg = /^0/gi;
    if (val.match(reg)) {
        $(this).val(val.replace(reg, ''));
    }
});

Bug fix reported by Kevin/Updated per recommendations of canon:

http://jsfiddle.net/SeanWessell/5qxwpv6h/2/

$('input').on('input propertychange paste', function (e) {
    var reg = /^0+/gi;
    if (this.value.match(reg)) {
        this.value = this.value.replace(reg, '');
    }
});

Solution 2:

I think you're looking for the keydown jQuery event as opposed to the keypress event. Here's some move info on the difference between the two. Try regex to get rid of leading zeroes:

$('input#foo').keydown(function(e){ 
    this.value = this.value.replace(/^0+/, '');
});

Solution 3:

Here's the fixed version :

<input id="foo" />

$('input#foo').keyup(function(e){ 
     if(this.value.substring(0,1) == "0")
     {
        this.value = this.value.replace(/^0+/g, '');             
     }         
});

jsfiddle : http://jsfiddle.net/ewmb1yq9/4/

Solution 4:

This could work:

$('input#foo').keyup(function(e) {
    if((this.value+'').match(/^0/)) {
        this.value = (this.value+'').replace(/^0+/g, '');
    }    
});

The only thing that could bother you with this solution is that zero is displayed for a second and then deleted, since we are using keyup event.

A quick demo

Solution 5:

Accept only numeric values not prefixed by zero. Supports Ctrl + A:

var escapeKeys = [8, 46];
$('input#foo').keyup(function (e) {
    if ($.inArray(e.keyCode, escapeKeys) != 0) {
        if ((this.value + String.fromCharCode(e.keyCode)).match(/^[1-9][0-9]*$|^$/) != null) {
            this.lastValidValue = this.value + String.fromCharCode(e.keyCode);
        } elseif (this.lastValidValue) {
            this.value = this.lastValidValue;
        } else {
            this.value = "";
        }
    } else {
        this.lastValidValue = this.value;
    }
});
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><inputid="foo" />

Post a Comment for "Disable Zero As First Letter In "