Populate form values based on previous same form fields

Populate form values based on previous same form fields

Post by Rizya » Thu, 10 Jun 2004 08:50:29


This message is cross posted in
alt.comp.lang.php & comp.lang.javascript

I have a form for a user to input an establishment's hours and what time an
event is taking place. After the user inputs their establishment's hours of
operation I want the form elements lower in the form to adjust so that an
event can only happen when the place is open.

I have two fields for the hours:
These are both select fields with values between 0-23
store_open
store_close

Later in the form I have
event_start
event_stop

These values need to be between whatever store_open and store_close are.

I am stuck.

Thank you.
 
 
 

Populate form values based on previous same form fields

Post by Mick Whit » Thu, 10 Jun 2004 09:52:10

Rizyak wrote

One approach

Number.protoype.isBetween=function(a,b){
return this>=Math.min(a,b) && this<=Math.max(a,b);
}

if(!( +event_start < +event_end &&
+event_start.isBetween(+store_open,+store_close) &&
+event_stop.isBetween(+store_open,+store_close))){
alert ("NO")
}
Mick

 
 
 

Populate form values based on previous same form fields

Post by rccharle » Sun, 13 Jun 2004 01:27:05

Rizyak" < XXXX@XXXXX.COM > wrote in message news:<ca5jc7$ke4$ XXXX@XXXXX.COM >...


Here is one approach to validating the event times:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Verify time fields</title>

<script type="text/javascript">

// ------------------------------------------
function validateAll()
{
alert("in validateAll");

var x = document.forms["myForm"];
var inputOK;

if( x.storeOpen.value == "" )
{
alert("Enter a store open time.");
inputOK= false;
}
else if( x.storeClose.value == "" )
{
alert("Enter a store close time.");
inputOK= false;
}
else if( x.eventStart.value == "" )
{
alert("Enter an event start time.");
inputOK= false;
}
else if( x.eventEnd.value == "" )
{
alert("Enter an event stop time.");
inputOK= false;
}
else
{
inputOK = checkBoth();
}

alert("from validateAll. inputOK = " + inputOK);
return inputOK;

}

// ..............................
function checkBoth()
{
alert("In checkBoth...");

var x = document.forms["myForm"];

var inputOK;

// Convert the times in string format to numeric format
// in minutes.
var storeOpen = convertTime(x.storeOpen.value);
var storeClose = convertTime(x.storeClose.value);
var eventStart = convertTime(x.eventStart.value);
var eventEnd = convertTime(x.eventEnd.value);

alert(".storeOpen.value = " + x.storeOpen.value +
" storeOpen = " + storeOpen +
"\n .storeClose.value = " + x.storeClose.value +
" storeClose = " + storeClose +
"\n .eventStart.value = " + x.eventStart.value +
" eventStart = " + eventStart +
"\n .eventEnd.value = " + x.eventEnd.value +
" eventEnd = " + eventEnd );

if ( eventStart > eventEnd )
{
alert("Event start must be before " +
"or equal to event end.");
x.eventStart.focus();
inputOK = false;
}
else if ( !isBetween(eventStart,storeOpen,storeClose) )
{
alert("Event start must occur " +
"when the store is open.");
x.eventStart.focus();
inputOK = false;
}
else if ( !isBetween(eventEnd,storeOpen,storeClose) )
{
alert("Event end must occur " +
"when the store is open.");
x.eventEnd.focus();
inputOK = false;
}
else
{
inputOK = true;
}


return inputOK;
}

// .....................................
function convertTime(timeString)
{

//Convert to a minute based value.
//Input may either be in 24 hour format
// or am/pm format.
// Examples 8:00am, 8, 8:12, 14:30, 2:30pm, or 4:30P.M.

var theTime = parseInt(timeString,10) * 60;

if ( timeString.indexOf("p") >= 0 ||
timeString.indexOf("P") >= 0 )
{
theTime += 12*60;
}

var minutesIndex = timeString.indexOf(":");
if ( minutesIndex >= 0 )
{
var minutes = timeString.substr(minutesIndex+1);
theTime += parseInt(minutes,10);
}

return theTime;
}

// ......................................
function isBetween(test,a,b)
{
return test>=a && test<=b;
}


</script>
</head>

<
 
 
 

Populate form values based on previous same form fields

Post by Lee » Sun, 13 Jun 2004 04:23:14

Rizyak said:

The two answers I've seen have been describing how to validate the
input values to make sure they're in the correct range. Is that
what you're asking about, or are you trying to change the choices
that are available in Select menus?

You might want to be more flexible than that, anyway.
One of my favorite establishments lists their hours as
11:30am to 2am, but periodically hosts an event that
starts at 11am.
 
 
 

Populate form values based on previous same form fields

Post by Rizya » Sun, 13 Jun 2004 07:31:43

Indeed Lee is correct.
I am trying to change choices.
Envision selecting a state and a list of cities come up. I won't need to
make a database call like this, but it is similar ideas. Parent child
relationships.
I have come up with a solution that uses refresh and then I ran into
problems with my other form elements going away. Then I stored them as
cookies and had focus issues on refresh then I decided there has got to be
an easier way. If possible I would like to stick with dhtml....
I think the flexibility that lee was talking about won't be a problem once
the solution is found.
Thanks!





an
of