PDA

View Full Version : Limit number of entries in a text area


samira02
09-05-2002, 02:51 PM
If a user adds more then say 22 characters in the textarea, I want
to alert them and not let the page get submitted. Here is the problem, the alert comes up but the page still gets submitted.
Here is all my code.
Thanks,
S

<script language="javascript">

var strNIINList;


function LTrim(str)
/***
PURPOSE: Remove leading blanks from our string.
IN: str - the string we want to LTrim

RETVAL: An LTrimmed string!
***/
{
var whitespace = new String(" ,;|\t\n\r");

var s = new String(str);

if (whitespace.indexOf(s.charAt(0)) != -1) {
// We have a string with leading blank(s)...

var j=0, i = s.length;

// Iterate from the far left of string until we
// don't have any more whitespace...
while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
j++;


// Get the substring from the first non-whitespace
// character to the end of the string...
s = s.substring(j, i);
}

return s;
}

function RTrim(str)
/***
PURPOSE: Remove trailing blanks from our string.
IN: str - the string we want to RTrim

RETVAL: An RTrimmed string!
***/
{
// We don't want to trip JUST spaces, but also tabs,
// line feeds, etc. Add anything else you want to
// "trim" here in Whitespace
var whitespace = new String(" ,;|\t\n\r");

var s = new String(str);

if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
// We have a string with trailing blank(s)...

var i = s.length - 1; // Get length of string

// Iterate from the far right of string until we
// don't have any more whitespace...
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
i--;


// Get the substring from the front of the string to
// where the last non-whitespace character is...
s = s.substring(0, i+1);
}

return s;
}


function trim(str)
/***
PURPOSE: Remove trailing and leading blanks from our string.
IN: str - the string we want to Trim

RETVAL: A Trimmed string!
***/
{
return RTrim(LTrim(str));
}

function IsDelimiter(TheString){
//alert(escape(TheString));
//if (TheString == "," || TheString == ";" || TheString == " " || TheString == "|"){
if (escape(TheString) == "%2C" || escape(TheString) == "%3B" || TheString == " " || escape(TheString) == "%0D" || escape(TheString) == "%0A" || escape(TheString) == "%7C") {
return (true);
}
else{
return (false);
}
}


function ValidateNIIN(TheNIIN){
if(TheNIIN.length != 9 && TheNIIN.length != 0){
alert("NIIN " + TheNIIN + " is " + TheNIIN.length + " characters long. It needs to be 9 characters to be valid");
}
else{
strNIINList = strNIINList + TheNIIN + ",";
}
}


function ValidateTextArea(TheText){
if (TheText.length > 22){
alert("Only 100 NIINs can be processed at one time. " + TheText.length);
return(false);
}
else{
return(true);
}
}

function CheckNIINs(TheForm){
//todo:
// check each NIIN for length = 9
// valid delimiters are space, comma, semicolon,pipeline
// could be NIINs entered with no delimeter
//
//loop through the string until we come across a valid delimiter
var strString;
var intStartPos;
var intLastDelimiterPos;

strNIINList = ""

strString = trim(TheForm.BatchNiin.value)
//alert("String Length: " + strString.length);
///alert(escape(strString));
intStartPos = 0;

//alert(strString.substring(6,8));

for(x = 0;x <= strString.length - 1;x++){
//alert(x);
if(x == (strString.length - 1)){
ValidateTextArea(strString)
ValidateNIIN(strString.substring(intStartPos,x+1));
}

if(IsDelimiter(strString.substring(x,x+1))){
//alert("Current Position: " + x);
//alert("Delimiter found at position: " + x);
//alert("StartPos: " + intStartPos);
//alert("EndPos: " + x);
ValidateNIIN(strString.substring(intStartPos,x));
intLastDelimiterPos = x;
intStartPos = x + 1;
}
}

//alert(strNIINList);
var arrayofstrings;
var newarray;

newarray = new Array();

arrayofstrings = strNIINList.split(",");
//alert(arrayofstrings.length)
//alert(arrayofstrings[1]);
y = 0;
for(x=0;x< arrayofstrings.length;x++){
//alert("here");
//alert((arrayofstrings[x]));
if(arrayofstrings[x] != ""){
//alert("here2");
newarray[y] = " " + arrayofstrings[x];
y++;
}
}

//alert(newarray);

TheForm.txtniinhidden1.value = newarray
return (true);
}

</script>






<form method="POST" action="OSMIS_SetVar.Asp?Screen=CheckNiin.asp?Action=BATCHPARTS&amp;RType=WS" language="JavaScript" onsubmit="return CheckNIINs(this)" id="form1" name="form1">

<input type="hidden" name="System_Level" value="INDIVIDUAL">
<input type="hidden" id="txtniinhidden1" name="txtniinhidden1">
<div align="left"><table border="0" width="100%">
<tr>
<td></td>
</tr>
<div align="center"><center><p class="redfont">Specify up to 100 <a onMouseover="showtip(this,event,'<%PrintHelp "NSNNIIN" %>')" onMouseout="hidetip()" onclick="javascript:window.open('OSMIS_Desc1.asp?Action=PopUp&amp;Anchor=NSNNIIN',null,'status,scrollbars,width=8 00,height=200')" style="color:Blue"><u>NIINs</u></a>:

<td align="center">
<textarea rows="20" cols="20" id="BatchNiin" name="BatchNiin"></textarea><br>
<input type="submit" value="Submit" id="submit1" name="submit1">

</td>
</tr>
<td align="center" class="redfonttwelve">
</td>
</table>
</div>
</form>

Kylena
10-29-2003, 01:47 AM
Here's a function which I found on Codestore (http://www.codestore.net)

function textCounter(field, countfield, maxlimit) {
var Comments = document.forms[0].Comments;

if (Comments.value.length > 500)
Comments.value = field.value.substring(0, 500);
else
countfield.value = 500 - Comments.value.length;
}

Call the function onKeyDown & onKeyUp for the textbox:

textCounter(this.form.Comments, this.form.remLen, 500)

Place another for users to see how many characters they have used:

<input readonly="readonly" type="text" name="remLen" size="3" maxlength="3" value="500"> characters left.<br>

whammy
10-29-2003, 03:28 AM
I also wrote something a long time ago, and tested it extensively cross-browser... :


/*
maxLength() - The "maxlength" attribute for textareas!
by Robert K. Davis

Example usage (this would limit entries to 255 characters):
<textarea
onkeypress="return getLength(this.value.length,255)"
onkeyup="return getLength(this.value.length,255)"
onblur="maxLength(this,255)"
></textarea>
*/
function getLength(l,m)
{
window.status = l + " of " + m + " maximum characters.";
return l < m;
}
function maxLength(t,m)
{
var l = t.value.length;
if (l > m)
{
alert("Your entry of " + l
+ " characters exceeds the maximum of " + m + ".\n"
+ "It will now be truncated.");
t.value = t.value.substring(0,m);
}
getLength(t.value.length,m);
}

glenngv
10-29-2003, 05:24 AM
If you still want to use the CheckNIINs() function in your validation, you just have to do a return false if there is an error in the input or a return true otherwise.