field validation needs to accept decimal values -- how please?

K

KathyB

I need this function to accept decimal values (e.g., 2.5 ok, not just
whole numbers between 1 and 5).

I can't find this answer...

thanks, kat

***************************
function ValidateSave(formRef,fieldName,min,max)
{
var formField = formRef.elements[fieldName];

if((parseInt(formField.value) != formField.value) || formField.value <
min || formField.value > max)
{
alert("The entry must be between " +min+ " and " +max+ ".");
formField.focus();
formField.select();
return false;
}
....else code left out
 
J

Janwillem Borleffs

KathyB said:
I need this function to accept decimal values (e.g., 2.5 ok, not just
whole numbers between 1 and 5).

I would use a regular expression for this, e.g.:

var figure = '1.1';
var reg = /^\d+(\.\d+)?$/;

alert(reg.test(figure)); // alerts true

With this, your function might look like this:

function ValidateSave(formRef,fieldName,min,max) {
var formField = formRef.elements[fieldName];
if (!/^\d+(\.\d+)?$/.test(formField)) {
alert('Invalid entry!');
formField.focus();
formField.select();
return false;
}

if (formField.value < min || formField.value > max) {
alert("The entry must be between " +min+ " and " +max+ ".");
formField.focus();
formField.select();
return false;
}
}


JW
 
J

Janwillem Borleffs

Janwillem Borleffs said:
I would use a regular expression for this, e.g.:

Made an error in my code, please use the following:

function ValidateSave(formRef,fieldName,min,max) {
var formField = formRef.elements[fieldName];
if (!/^\d+(\.\d+)?$/.test(formField.value)) {
alert('Invalid entry!');
formField.focus();
formField.select();
return false;
}

if (formField.value < min || formField.value > max) {
alert("The entry must be between " +min+ " and " +max+ ".");
formField.focus();
formField.select();
return false;
}
}


JW
 
K

Kathy Burke

JW, thanks so much! That works great. I've seen reg expressions
before...but clearly need to go study them a bit.

Thanks again.

Kathy
 
K

Kathy Burke

Hi again, JW. For some reason, I'm getting an error on this
function...looks ok to me, but the parser (Xselerator) says I'm missing
a "[" or a "(" -- can't tell which. Doesn't give me the exact line, but
when I remove this function, I don't get the error.

Thanks,

Kathy

function ValidateSave(formRef,fieldName,min,max)
{
var formField = formRef.elements[fieldName];
if (!/^\d+(\.\d+)?$/.test(formField.value)) {
alert('Invalid entry! Please try again.');
formField.focus();
formField.select();
return false;
}
if formField.value < min || formField.value > max {
alert("The entry must be between " +min+ " and " +max+ ".");
formField.focus();
formField.select();
return false;
}
else
{
varScroll = document.body.scrollTop;
document.cookie="position="+varScroll;
return confirm("You are about to enter: " +formField.value+ " --
click OK to proceed.");
}
}
 
J

Janwillem Borleffs

Kathy Burke said:
function ValidateSave(formRef,fieldName,min,max)
{ .....
}
if formField.value < min || formField.value > max {

Hi Kathy,

The if statement above is where the problem is, it should read:

if (formField.value < min || formField.value > max) {


JW
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top