Page 2 of 2

Re: datums vergelijken

Posted: Thu Jun 10, 2010 1:51 pm
by deactivated010521
----------

Re: datums vergelijken

Posted: Thu Jun 10, 2010 2:02 pm
by Gregor
Na enig testen, het lijkt erop dat je beide veldnamen mag wijzigen maar alleen bij de start moet je dan een alias invullen.

Gregor

Re: datums vergelijken

Posted: Thu Jun 10, 2010 3:14 pm
by deactivated010521
----------

Re: datums vergelijken

Posted: Fri Jun 11, 2010 6:16 am
by Gregor
Dank je wel Arnoud. Ik ga hier vandaag mee verder. Zal de lengtecontrole van de strings er aan toevoegen cq. aanpassen.
En wat betreft het opgewaaide stof, misschien heb ik je uitleg niet begrepen.

Gregor

Re: datums vergelijken

Posted: Fri Jun 11, 2010 6:35 am
by Gregor
Toch meteen even geprobeerd, een update.

Ik heb in de css-id respectievelijk ingevuld:
- Verlof van -> start
- Verlof tot -> end

De code die ik nu gebruik is:

Code: Select all

{* this script can be placed in a external .js file *}
{literal}
    <__script__ language="JavaScript">
    <!--
    /* set start_date / end_date as today's date */ 
    var date_now = new Date();
    var start_date = date_now.getDate()+ "/"+ (date_now.getMonth() + 1) + "/"+ date_now.getFullYear();
    var end_date = date_now.getDate()+ "/"+ (date_now.getMonth() + 1) + "/"+ date_now.getFullYear();
        
	/* check form, throw error is available */ 
	function check_me() {
	    var error = "";
	    if (compare_timestamp(start_date, end_date) == false) {
	        error += "\n- Start verlof vanaf mag niet later liggen dan eind verlof.";
	    }
	    if (error != "")	{
	        alert('Het formulier is niet correct ingevuld:'+error);
	        return false;
	    }
	    return(true);
	}
	
	/* compare timestamp end_date versus start_date */
	function compare_timestamp(start_date, end_date) {
	    //alert(start_date);
	    //alert(end_date);
	    var start_date_epoch = date_to_date_as_epoch(start_date);
	    var end_date_epoch = date_to_date_as_epoch(end_date);
	    if (start_date_epoch > end_date_epoch) {
	        return false;
	    } else {
	        return true;
	    }
        }
	
	/* convert fulldate to epoch-time */
	function date_to_date_as_epoch(mmddyyyy) {
	    var mmddyyyy_array    = mmddyyyy.split("/");
	    var date = new Date();
	    date.setMonth(mmddyyyy_array[0] - 1);
	    date.setDate(mmddyyyy_array[1]);
	    date.setFullYear(mmddyyyy_array[2]);
	    var epoch = date.getTime();
	    return epoch;
	}
	
	/* read out startdate / enddate from select, option */	
       function set_startdate_enddate(id, startend) {	
		var id;
		var startend;
		//var stripped_id = id.substr(0, id.length -1);
/*		var stripped_id = id.substr(0, 11);
*/

                if (startend == 'start') {
                   // start is 5 letters 
                   var stripped_id = id.substr(0, 5);
                } else {
                   // end is 3 letters
                  var stripped_id = id.substr(0, 3);
                }

                //dd_key = stripped_id + '1';
		//mm_key = stripped_id + '2';
		//yyyy_key = stripped_id + '3';
		dd_key = stripped_id + 'day';
		mm_key = stripped_id + 'month';
		yyyy_key = stripped_id + 'year';
		
		var dd_obj = document.getElementById(dd_key);
		var dd_index = dd_obj.selectedIndex;
		var dd_var = dd_obj.options[dd_index].value;
		var mm_obj = document.getElementById(mm_key);
		var mm_index = mm_obj.selectedIndex;
		var mm_var = mm_obj.options[mm_index].value;
		var yyyy_obj = document.getElementById(yyyy_key);
		var yyyy_index = yyyy_obj.selectedIndex;
		var yyyy_var = yyyy_obj.options[yyyy_index].value;

		//dd_var = document.getElementById(dd_key).options[eval(dd_key).selectedIndex].value;
		//dd_var = document.getElementById(dd_key).options[eval(dd_key).selectedIndex].value;
		//mm_var = document.getElementById(mm_key).options[eval(mm_key).selectedIndex].value;
		//yyyy_var = document.getElementById(yyyy_key).options[eval(yyyy_key).selectedIndex].value;

		if (startend == 'start') {
		    start_date = dd_var + '/'+ mm_var + '/'+ yyyy_var;
		} else {
		    end_date = 	dd_var + '/'+ mm_var + '/'+ yyyy_var;
		}		
    }    
    -->
    </__script>
{/literal}



{* DEFAULT FORM LAYOUT / pure CSS *}
{$fb_form_header}
{if $fb_form_done == 1}
	{* This first section is for displaying submission errors *}
	{if isset($fb_submission_error) && $fb_submission_error}
		<div class="error_message">{$fb_submission_error}</div>
		{if isset($fb_show_submission_errors) && $fb_show_submission_errors}
			<div class="error">
			<ul>
			{foreach from=$fb_submission_error_list item=thisErr}
				<li>{$thisErr}</li>
			{/foreach}
			</ul>
		</div>
		{/if}
	{/if}
{else}
	{* this section is for displaying the form *}
	{* we start with validation errors *}
	{if isset($fb_form_has_validation_errors) && $fb_form_has_validation_errors}
		<div class="error_message">
		<ul>
		{foreach from=$fb_form_validation_errors item=thisErr}
			<li>{$thisErr}</li>
		{/foreach}
		</ul>
		</div>
	{/if}
	{if isset($captcha_error) && $captcha_error}
		<div class="error_message">{$captcha_error}</div>
	{/if}

	{* and now the form itself *}
	{$fb_form_start}
	<div>{$fb_hidden}</div>
	<div{if $css_class != ''} class="{$css_class}"{/if}>
	{if $total_pages gt 1}<span>{$title_page_x_of_y}</span>{/if}
	{foreach from=$fields item=entry}
		{if $entry->display == 1}
        	{strip}
         	{if $entry->needs_div == 1}
            	<div
            	{if $entry->required == 1 || $entry->css_class != '' || $entry->valid == 0} class="
              		{if $entry->required == 1}required{/if}
              		{if $entry->css_class != ''} {$entry->css_class}{/if}
                    {if $entry->valid == 0} fb_invalid{/if}
              		"
            	{/if}
            	>
         	{/if}
         	{if $entry->hide_name == 0}
            	<label{if $entry->multiple_parts != 1} for="{$entry->input_id}"{/if}>{$entry->name}
            	{if $entry->required_symbol != ''}
               		{$entry->required_symbol}
            	{/if}
            	</label>
         	{/if}
         	{if $entry->multiple_parts == 1}
            	{section name=numloop loop=$entry->input}
               		{if $entry->label_parts == 1}
               			<div>{$entry->input[numloop]->input} {$entry->input[numloop]->name}</div>
               		{else}
               			{$entry->input[numloop]->input}
               		{/if}
               		{if isset($entry->input[numloop]->op) && $entry->input[numloop]->op}{$entry->input[numloop]->op}{/if}
            	{/section}
         	{else}
            	{if $entry->smarty_eval == '1'}{eval var=$entry->input}{else}{$entry->input}{/if}
         	{/if}
         	{if $entry->valid == 0} <--- {$entry->error}{/if}
         	{if $entry->needs_div == 1}
            	</div>
         	{/if}
         	{/strip}
     	{/if}
	{/foreach}
	{if $has_captcha == 1}
		<div class="captcha">{$graphic_captcha}{$title_captcha}<br />{$input_captcha}</div>
	{/if}
	<div class="submit">{$prev}{$submit}</div>
	</div>
	{$fb_form_end}
{/if}
{$fb_form_footer}
De controle op de datum wordt met deze instellingen nog niet goed uitgevoerd. Moet nu weg. Vanmiddag mee verder :-)

Gregor

Re: datums vergelijken

Posted: Fri Jun 11, 2010 1:19 pm
by deactivated010521
----------

Re: datums vergelijken

Posted: Fri Jun 11, 2010 2:23 pm
by Gregor
De werkelijkheid lijkt tamelijk weerbarstig Arnoud ;)
Wat is het geval, als ik de 'startedate' een dag invoer die ligt na de 'enddate', dan krijg ik een melding. Correct. Nu pas ik de dag van 'enddate' aan naar een waarde > startdate, en hij blijft de foutmelding geven. Pas als ik de maand van de 'startdate' wijzig naar een latere maand, dan wordt het formulier verstuurd. Het lijkt erop dat de variabelen niet worden hersteld. Deel je die mening?

Gregor

Re: datums vergelijken

Posted: Fri Jun 11, 2010 3:33 pm
by deactivated010521
----------

Re: datums vergelijken

Posted: Fri Jun 11, 2010 4:19 pm
by Gregor
hihihi, helemaal goed nu :D

Is het voor jou ok Arnoud als ik het geheel samenvat en in de Engelse Tips&Tricks plaats?

Gregor

Re: datums vergelijken

Posted: Fri Jun 11, 2010 5:27 pm
by deactivated010521
----------