Solved

validating a text field!!!

Posted on 2002-07-15
11
183 Views
Last Modified: 2008-03-03
hai all,

I have textbox for user to key in product_id, I wanted to check the following while keyin itself(it is a alphanumeric value)
1)first two characters should be alphabets.
2)remaining should b numeric.
3)user should not key in beyond 13 characters.

how am I  go about it? can any one feed back to me.

0
Comment
Question by:manju70
  • 4
  • 4
  • 3
11 Comments
 
LVL 10

Expert Comment

by:zvonko
ID: 7156531
How about this:
<html>
<head>
<script>
function checkField(event, thisField) {
  thischar = (event.which) ? event.which : event.keyCode;
  if(thischar < 32) return true;
  if(thischar > 90) return false;
  if(thischar < 48) return false;
  if(thisField.value.length < 2) {
      if(thischar > 64) return true;
      alert('Only A-Z in first two positions.')
      return false;
  }
 return true;
}
</script>
</head>
<body>
<form>
<input type=text size=13 maxlength=13 onKeyDown="return checkField(event, this)">
</form>
</body>
</html>


Good luck,
zvonko

0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7156572
Another one which also works in Netscape:

function checktextbox(tObj)
{
     sVal = tObj.value;
     sTmp = "";
     sAlpha = "abcdefghijklmnopqrstuvwxyz";
     sNumeric = "1234567890";
     
     bFalse = false;
     for(i=0;i<sVal.length;i++)
     {
          if(i<2 && sAlpha.indexOf(sVal.charAt(i))<0)
               bFalse = true;
          else
               sTmp += sVal.charAt(i);
          if(i>=2 && sNumeric.indexOf(sVal.charAt(i))<0)
               bFalse = true;
          else
               sTmp += sVal.charAt(i);
     }
     tObj.value = sTmp;
}

with:

<input type=text onKeyUp="checktextbox(this)" maxlength=13>
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7156573
Can be shorter:

function checktextbox(tObj)
{
    sVal = tObj.value;
    sTmp = "";
    sAlpha = "abcdefghijklmnopqrstuvwxyz";
    sNumeric = "1234567890";
   
    bFalse = false;
    for(i=0;i<sVal.length;i++)
    {
         if(i<2 && sAlpha.indexOf(sVal.charAt(i))>=0)
              sTmp += sVal.charAt(i);
         if(i>=2 && sNumeric.indexOf(sVal.charAt(i))>=0)
              sTmp += sVal.charAt(i);
    }
    tObj.value = sTmp;
}
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7156574
and this one can be gone:
bFalse = false;
0
 

Author Comment

by:manju70
ID: 7156584
hai zvonko,
Thank you for ur reply

can u please give me the feed back as for what u check the first 3 if condititons.

actually I tried ur coding , it doesn't accepts key in numbers for first two characters. but can accept keyin alpabets for remaining 11 characters.(actually I require remaining 11 should accept only alphabets)

expecting ur reply.
manju
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:manju70
ID: 7156591
sorry remaining 11 characters should accept only numbers.

manju
0
 

Author Comment

by:manju70
ID: 7156614
sorry remaining 11 characters should accept only numbers.

manju
0
 
LVL 10

Accepted Solution

by:
zvonko earned 50 total points
ID: 7156718
Than this would do:
<html>
<head>
<script>
function checkField(event, thisField) {
 thischar = (event.which) ? event.which : event.keyCode;
//alert("key: "+thischar)
 if(thischar < 32) return true;
 if(thischar > 122) return false;
 if(thischar < 48) return false;
 if(thisField.value.length < 2) {
    if(thischar > 57) return true;
    alert('Only A-Z in first two positions.')
    return false;
 } else {
    if(thischar < 58) return true;
    alert('Only 0-1 after first two positions.')
    return false;
 }
}
</script>
</head>
<body>
<form>
<input type=text size=13 maxlength=13 onKeyDown="return checkField(event, this)">
</form>
</body>
</html>

This numbers are ASCII values of pressed key.
The first IF let all control keys pass, like backspace.
Numbers 48 to 57 are digits.
Numbers 58 to 122 are alpha.

You see?

0
 
LVL 10

Expert Comment

by:zvonko
ID: 7156725
Second active alert is a nonsense :)

It should read:
alert('Only 0-9 after first two positions.')

The first commented alert is to test key values you like to add to checking.

Cheers,
zvonko

0
 
LVL 10

Expert Comment

by:zvonko
ID: 7161645
Thanks for the points manju70 :)

How does my code work for you?

0
 

Author Comment

by:manju70
ID: 7163845
yah it works the way I expected.Thanks & hats off.
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

In Part 1 (http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/A_7849-Hex-Maze.html) we covered the hexagonal maze basics -- how the cells are represented in a JavaScript array and how the maze is displayed.  In this part, we'…
This article discusses the difference between strict equality operator and equality operator in JavaScript. The Need: Because JavaScript performs an implicit type conversion when performing comparisons, we have to take this into account when wri…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now