Avatar billede andersasp Nybegynder
22. september 2004 - 17:13 Der er 6 kommentarer og
1 løsning

Kalender script skal frasortere enkelte dage!

Hejsa eksperter!

Jeg har et kalender script som virker helt perfekt. Det virker på den måde at du klikker på en dato hvor den derefter sætter den valgte dato ind i en tekst boks.

Den skal dog nu gerne laves således at hvis det er lørdag kan der ikke vælges den efterfølgende søndag eller mandag. Håber dette kan lade sig gøre??  Jeg kender desværre slet ikke til java så jeg er lidt lost her!

Scriptet er forneden:

<!--
Title: Tigra Calendar
URL: http://www.softcomplex.com/products/tigra_calendar/
Version: 3.2
Date: 10/14/2002 (mm/dd/yyyy)
Feedback: feedback@softcomplex.com (specify product title in the subject)
Note: Permission given to use this script in ANY kind of applications if
  header lines are left unchanged.
Note: Script consists of two files: calendar?.js and calendar.html
About us: Our company provides offshore IT consulting services.
    Contact us at sales@softcomplex.com if you have any programming task you
    want to be handled by professionals. Our typical hourly rate is $20.
-->
<html>
<head>
<title>Select Date, Please.</title>
<style>
    td {font-family: Tahoma, Verdana, sans-serif; font-size: 12px;}
</style>
<script language="JavaScript">

// months as they appear in the calendar's title
var ARR_MONTHS = ["January", "February", "March", "April", "May", "June",
        "July", "August", "September", "October", "November", "December"];
// week day titles as they appear on the calendar
var ARR_WEEKDAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
// day week starts from (normally 0-Mo or 1-Su)
var NUM_WEEKSTART = 1;
// path to the directory where calendar images are stored. trailing slash req.
var STR_ICONPATH = 'img/';

var re_url = new RegExp('datetime=(\\-?\\d+)');
var dt_current = (re_url.exec(String(window.location))
    ? new Date(new Number(RegExp.$1)) : new Date());
var re_id = new RegExp('id=(\\d+)');
var num_id = (re_id.exec(String(window.location))
    ? new Number(RegExp.$1) : 0);
var obj_caller = (window.opener ? window.opener.calendars[num_id] : null);

if (obj_caller && obj_caller.year_scroll) {
    // get same date in the previous year
    var dt_prev_year = new Date(dt_current);
    dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);
    if (dt_prev_year.getDate() != dt_current.getDate())
        dt_prev_year.setDate(0);
   
    // get same date in the next year
    var dt_next_year = new Date(dt_current);
    dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);
    if (dt_next_year.getDate() != dt_current.getDate())
        dt_next_year.setDate(0);
}

// get same date in the previous month
var dt_prev_month = new Date(dt_current);
dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);
if (dt_prev_month.getDate() != dt_current.getDate())
    dt_prev_month.setDate(0);

// get same date in the next month
var dt_next_month = new Date(dt_current);
dt_next_month.setMonth(dt_next_month.getMonth() + 1);
if (dt_next_month.getDate() != dt_current.getDate())
    dt_next_month.setDate(0);

// get first day to display in the grid for current month
var dt_firstday = new Date(dt_current);
dt_firstday.setDate(1);
dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - NUM_WEEKSTART) % 7);

// function passing selected date to calling window
function set_datetime(n_datetime, b_close) {
    if (!obj_caller) return;

    var dt_datetime = obj_caller.prs_time(
        (document.cal ? document.cal.time.value : ''),
        new Date(n_datetime)
    );

    if (!dt_datetime) return;
    if (b_close) {
        window.close();
        obj_caller.target.value = (document.cal
            ? obj_caller.gen_tsmp(dt_datetime)
            : obj_caller.gen_date(dt_datetime)
        );
    }
    else obj_caller.popup(dt_datetime.valueOf());
}

</script>
</head>
<body bgcolor="#FFFFFF" marginheight="5" marginwidth="5" topmargin="5" leftmargin="5" rightmargin="5">
<table class="clsOTable" cellspacing="0" border="0" width="100%">
<tr><td bgcolor="#4682B4">
<table cellspacing="1" cellpadding="3" border="0" width="100%">
<tr><td colspan="7"><table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<script language="JavaScript">
document.write(
'<td>'+(obj_caller&&obj_caller.year_scroll?'<a href="java script:set_datetime('+dt_prev_year.valueOf()+')"><img src="'+STR_ICONPATH+'prev_year.gif" width="16" height="16" border="0" alt="previous year"></a>&nbsp;':'')+'<a href="java script:set_datetime('+dt_prev_month.valueOf()+')"><img src="'+STR_ICONPATH+'prev.gif" width="16" height="16" border="0" alt="previous month"></a></td>'+
'<td align="center" width="100%"><font color="#ffffff">'+ARR_MONTHS[dt_current.getMonth()]+' '+dt_current.getFullYear() + '</font></td>'+
'<td><a href="java script:set_datetime('+dt_next_month.valueOf()+')"><img src="'+STR_ICONPATH+'next.gif" width="16" height="16" border="0" alt="next month"></a>'+(obj_caller && obj_caller.year_scroll?'&nbsp;<a href="java script:set_datetime('+dt_next_year.valueOf()+')"><img src="'+STR_ICONPATH+'next_year.gif" width="16" height="16" border="0" alt="next year"></a>':'')+'</td>'
);
</script>
</tr>
</table></td></tr>
<tr>
<script language="JavaScript">

// print weekdays titles
for (var n=0; n<7; n++)
    document.write('<td bgcolor="#87cefa" align="center"><font color="#ffffff">'+ARR_WEEKDAYS[(NUM_WEEKSTART+n)%7]+'</font></td>');
document.write('</tr>');

// print calendar table
var dt_current_day = new Date(dt_firstday);
while (dt_current_day.getMonth() == dt_current.getMonth() ||
    dt_current_day.getMonth() == dt_firstday.getMonth()) {
    // print row heder
    document.write('<tr>');
    for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
        if (dt_current_day.getDate() == dt_current.getDate() &&
            dt_current_day.getMonth() == dt_current.getMonth())
            // print current date
            document.write('<td bgcolor="#ffb6c1" align="center" width="14%">');
        else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
            // weekend days
            document.write('<td bgcolor="#dbeaf5" align="center" width="14%">');
        else
            // print working days of current month
            document.write('<td bgcolor="#ffffff" align="center" width="14%">');

        document.write('<a href="java script:set_datetime('+dt_current_day.valueOf() +', true);">');

        if (dt_current_day.getMonth() == this.dt_current.getMonth())
            // print days of current month
            document.write('<font color="#000000">');
        else
            // print days of other months
            document.write('<font color="#606060">');
           
        document.write(dt_current_day.getDate()+'</font></a></td>');
        dt_current_day.setDate(dt_current_day.getDate()+1);
    }
    // print row footer
    document.write('</tr>');
}
if (obj_caller && obj_caller.time_comp)
    document.write('<form onsubmit="java script:set_datetime('+dt_current.valueOf()+', true)" name="cal"><tr><td colspan="7" bgcolor="#87CEFA"><font color="White" face="tahoma, verdana" size="2">Time: <input type="text" name="time" value="'+obj_caller.gen_time(this.dt_current)+'" size="8" maxlength="8"></font></td></tr></form>');
</script>
</table></tr></td>
</table>
</body>
</html>
Avatar billede roenving Novice
22. september 2004 - 17:29 #1
Gælder det kun, hvis det idag er en lørdag ?-)
Avatar billede andersasp Nybegynder
22. september 2004 - 17:36 #2
Ja hvis man bruger scriptet på en lørdag skal der ikke kunne klikkes på den efterfølgende søndag eller mandag!
Avatar billede roenving Novice
22. september 2004 - 17:48 #3
Sådan !-)

// print calendar table
var dt_current_day = new Date(dt_firstday);
while (dt_current_day.getMonth() == dt_current.getMonth() ||
    dt_current_day.getMonth() == dt_firstday.getMonth()) {
    // print row heder
    document.write('<tr>');
    for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
        if (dt_current_day.getDate() == dt_current.getDate() &&
            dt_current_day.getMonth() == dt_current.getMonth())
            // print current date
            document.write('<td bgcolor="#ffb6c1" align="center" width="14%">');
        else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
            // weekend days
            document.write('<td bgcolor="#dbeaf5" align="center" width="14%">');
        else
            // print working days of current month
            document.write('<td bgcolor="#ffffff" align="center" width="14%">');

        dt_dateDiff = dt_current_day.getDate() - dt_current.getDate();
        if(dt_current.getDay()==6&&(dt_dateDiff==1||dt_dateDiff==2))
            document.write('<a href="java script:void(alert(\47Du kan ikke vælge imorgen eller i overmorgen på en lørdag\47));">');
        else
            document.write('<a href="java script:set_datetime('+dt_current_day.valueOf() +', true);">');
       

        if (dt_current_day.getMonth() == this.dt_current.getMonth())
            // print days of current month
            document.write('<font color="#000000">');
        else
            // print days of other months
            document.write('<font color="#606060">');
           
        document.write(dt_current_day.getDate()+'</font></a></td>');
        dt_current_day.setDate(dt_current_day.getDate()+1);
    }
    // print row footer
    document.write('</tr>');
}

-- som du kan se har jeg klippet hele tabelskrivningsdelen ud, men jeg har kun tilføjet 4 linjer !-)
Avatar billede andersasp Nybegynder
22. september 2004 - 18:17 #4
Det ser ud til at virke, men jeg kan vel ikke teste det før lørdag :) Du kan bare smide et svar så lægger jeg points! Tusinde tak for hjælpen. Jeg regnede faktisk ikke rigtig med at det kunne lade sig gøre!!
Avatar billede roenving Novice
22. september 2004 - 18:22 #5
Jeg testede det ved at sætte computerens ur 3 dage frem, og det tager jo omkring 3 sekunder at dobbeltklikke på uret !-)

Velbekomme '-)
Avatar billede andersasp Nybegynder
22. september 2004 - 18:34 #6
agraa selvfølgelig! men tusinde tak for hjælpen!
Avatar billede roenving Novice
22. september 2004 - 18:35 #7
Tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester