Populate form values based on previous same form fields

Discussion in 'Javascript' started by Rizyak, Jun 9, 2004.

  1. Rizyak

    Rizyak Guest

    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.
    Rizyak, Jun 9, 2004
    #1
    1. Advertising

  2. Rizyak

    Mick White Guest

    Rizyak wrote
    >
    > 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.


    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
    Mick White, Jun 9, 2004
    #2
    1. Advertising

  3. Rizyak

    Robert Guest

    "Rizyak" <> wrote in message news:<ca5jc7$ke4$>...

    > 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.
    >


    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>

    <body>

    <p>Please try out our form.</p>

    <form name="myForm"
    action="http://www.notavalidwebaddress.com"
    method="POST"
    onSubmit="return validateAll();">

    <p>Store start time:<br>
    <input type="text" name="storeOpen" size="20"><br><br>
    Store end time:<br>
    <input type="text" name="storeClose" size="20"><br>
    </p>
    <p>The little event times.</p>
    <p>Event start time:<br>
    <input type="text" name="eventStart" size="40">
    <p>Event end time<br>
    <input type="text" name="eventEnd" size="40">
    </p>

    <p><input type="submit" border="0" value="Submit">
    </form>

    </body>
    </html>

    Robert
    Robert, Jun 11, 2004
    #3
  4. Rizyak

    Lee Guest

    Rizyak said:
    >
    >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.


    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.
    Lee, Jun 11, 2004
    #4
  5. Rizyak

    Rizyak Guest

    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!



    "Lee" <> wrote in message
    news:...
    > Rizyak said:
    > >
    > >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.

    >
    > 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.
    >
    Rizyak, Jun 11, 2004
    #5
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Enjoy Life
    Replies:
    2
    Views:
    271
    Roland Hall
    Feb 23, 2005
  2. Flanman
    Replies:
    1
    Views:
    157
    Anthony Jones
    Sep 6, 2006
  3. Brett_A
    Replies:
    8
    Views:
    184
    Bob Barrows [MVP]
    Apr 19, 2008
  4. Replies:
    0
    Views:
    280
  5. ero
    Replies:
    7
    Views:
    181
    Yanick
    Aug 13, 2006
Loading...

Share This Page