0

I have made a form in which I want that in the mobile number field it must take only 10 digit. If it exceed than replace with space "".And want that my user not able to enter more than 10 digits. I only want to do with Regular Expression. I don't want to do it with maxlength because maxlength not work with type number in input element.

function nValid(){
var elem=document.getELementById("mNumber");
var mNumber=elem.value;
var status=document.getElementById("status");
var regex=/\d{10}/;
if(mNumber==""){
status.innerHTML="Please enter the mobile number.";
}else if(mNumber.match(regex)==null || mNumber.length>10){
status.innerHTML="Please enter upto 10-digit mobile number";
//here I want Regular Expression elem.value=mNumber.replace(regex,""); 
}else{
status.innerHTML="Looks good!";
}
}
<form>
<label for="mNumber">Mobile Number</label>
<input type="number" id="mNumber" oninput="nValid()"/>
<small id="status" class="text-form text-muted"></small>
</form>

2 Answers2

0

I'd do it like this.

function nValid(elem){
    var mNumber = elem.value;
    var status = document.getElementById("status");
    if(mNumber.length == 0) {
        status.innerHTML = "Please enter the mobile number";
    } else if (!/^\d+$/.test(mNumber) || mNumber.length > 10) {
        status.innerText = "The number can only consist of up to 10 digits";
        setTimeout(function() {
            elem.value = mNumber.replace(/[^\d]+/, '').substring(0, 10);
            status.innerText = "Looks good!";
        }, 500);
    } else {
        status.innerText = "Looks good!";
    }
}
<form>
<label for="mNumber">Mobile Number</label>
<input type="text" id="mNumber" oninput="nValid(this)"/>
<small id="status" class="text-form text-muted"></small>
</form>
renich
  • 146
  • 1
  • 5
0

function nValid(){
var elem=document.getElementById("mNumber");
var mNumber=elem.value;
var status=document.getElementById("status");
var regex=/\d{10}/;
if(mNumber==""){
status.innerHTML="Please enter the mobile number.";
}else if(mNumber.match(regex)==null || mNumber.length>10){
status.innerHTML="Please enter upto 10-digit mobile number";
if(mNumber.length>10){
elem.value=mNumber.replace(/.$/g,"");
status.innerHTML="Looks good!";
}
}else{
status.innerHTML="Looks good!";
}
}
<form>
<label for="mNumber">Mobile Number</label>
<input type="number" id="mNumber" oninput="nValid()"/>
<small id="status" class="form-text text-muted"></small>
</form>