Richard J Simmons
Richard J Simmons

Reputation: 15

validation function doesn't work

I have created a java script function, it should validate the input character that should contain 10 characters and can contain alphanumeric characters, but this function does not work, please help me

function ValidateNIC(id)
{
	
    var letters = /^[0-9a-zA-Z ]+$/;
	
	while(id.value.length==10)
    if(id.value.match(letters))
    {
        return true;
    }
    else
    {
        alert('NIC must have alphanumeric characters only or should contain 10 charaters');
        id.focus();
        return false;
    }
}

Upvotes: 0

Views: 49

Answers (3)

Abhinav Galodha
Abhinav Galodha

Reputation: 9878

You can put all the conditions for validation in Regex like ^[a-zA-Z0-9]{10}$. Note that additional {10} in the regex pattern string for creating a match only when the length is 10 exactly.

Then you can make use of the Regex Object test method, which test the regex pattern against a string and returns true if the match is successful and false otherwise.

Complete modified snippet below with positive and negative test cases.

function ValidateNIC(id){
	   
    var aphaPattern10 = /^[a-zA-Z0-9]{10}$/g;
    var result = aphaPattern10.test(id.value);

	if(!result){
      alert('NIC must have alphanumeric characters only or should contain 10 charaters');
        //id.focus();
      }
      return result;
 
}

var testObjPass = { value : "012345678a"}
console.log(ValidateNIC(testObjPass));

var testObjFail = { value : "012345678a21312"}
console.log(ValidateNIC(testObjFail));

Upvotes: 1

Mitesh Pant
Mitesh Pant

Reputation: 542

The following code checks the following NIC must have alphanumeric characters only or should contain 10 charaters. So if it is only 10 characters then it will not alert else, it will test the regex. Considering id is an object with key value

  function ValidateNIC(id)
  {
      var letters = /^[0-9a-zA-Z ]+$/;

    if(id.value.length!==10){
      if(id.value.match(letters))
      {
          return true;
      }
      else
      {
          alert('NIC must have alphanumeric characters only or should contain 10 charaters');
          id.focus();
          return false;
      }
      }
  }

Upvotes: 0

John Hascall
John Hascall

Reputation: 9416

With your code as it stands, if the length is not 10, then nothing else happens. A better approach might be:

if ((id.value.length == 10) && id.value.match(letters)) {
    return true;
}
alert("NIC must ...");
id.focus();
return false;

Upvotes: 1

Related Questions