PDA

View Full Version : check for a range of numbers

wkilc
12-05-2012, 12:29 AM
I have a form validation script than can check for a specific value, i this case 1 student:

{
if ( formobj.elements['Student'].value == '1' && formobj.elements['Adults'].value == '' )
{
alert('Error: How many adults will be attending?');
return false;
}
return true;
}

I want to change it so it will check a range of Student values... if the value was 1-10, or 11-20, or 21-30, etc...

I had figured this to get started:

{
if ( formobj.elements['Student'].value <= '10' && formobj.elements['Adults'].value == '' )
{
alert('Error: How many adults will be attending?');
return false;
}
return true;
}

... but even that does not work.

Thanks.

donna1
12-05-2012, 12:47 AM
'10' Thats a string right?
dont you have to convert it to a number before you can use <=

Old Pedant
12-05-2012, 12:50 AM
Yes, you *MUST* convert to a number!

Because '10' is less than '2'! (And '3' and '4' and ... '9'.)

Old Pedant
12-05-2012, 12:54 AM
One way:

{
var student = Number( formobj.Student.value ); // why do you use elements['Student']???
if ( student <= 10 && adults <= 0 )
{
alert('Error: How many adults will be attending?');
return false;
}
return true;
}

I got the value of adults that way in case some joker puts in -17 as the number!

wkilc
12-05-2012, 01:31 AM
Thank you. If I follow, the '10' was not a string, but an actual value from the form field.

I tried this, but didn't know how to use the 'i' in the if statement.

{
for (var i = 1; i <= 20; i++ )
{
if ( formobj.elements['Students'].value == i && formobj.elements['Adults'].value == '' )
{
alert('Error: How many adults will be attending?');
return false;
}
}
return true;
}

This is great, thanks... but how do I set it to check between, let's say, 11 and 20? Is this it?

{
var student = Number( formobj.Student.value ); // why do you use elements['Student']???
if ( student <= 20 && student >=10 && adults <= 0 )
{
alert('Error: How many adults will be attending?');
return false;
}
return true;
}

felgall
12-05-2012, 01:43 AM
but how do I set it to check between, let's say, 11 and 20?

The easiest way to test that would be:

if (student > 10 && student < 21)

Note also that ALL values entered into form fields are text strings and not numbers so you need to convert it to a number first - for example:

students = +formobj.elements['Student'].value;

the + being the shortest way to tell it to convert a string to a number (wrapping the variable after the + inside Number() would do the same thing).

wkilc
12-05-2012, 02:02 AM
Thanks so much... is this correct?

{
var student = +formobj.Student.value;
if (student > 10 && student < 21) && adults <= 0 )
{
alert('Error: How many adults will be attending?');
return false;
}
return true;
}

Old Pedant
12-05-2012, 02:23 AM
Form field values are *ALWAYS* strings. Always.

If you want them to be *TREATED* as numbers, you must convert them.

There are many ways to do that. The way I used Number( ...string value... ) is just one of them. But it's probably the easiest to understand.

********

but didn't know how to use the 'i' in the if statement.
I have no idea what i is supposed to be.

What is it you have 20 of???

Old Pedant
12-05-2012, 02:24 AM
And, yes, prepending a unary plus is another way to convert a string to a number.

So is parseFloat(string) and parseInt(string, radix)

And and and...

wkilc
12-05-2012, 03:15 AM
This worked: