🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
5 messages
5 total messages Started by jivanmuktaWYTNIJTO Wed, 18 Aug 2010 15:42
problem z popupowym kalendarzykiem
#50214
Author: jivanmuktaWYTNIJTO
Date: Wed, 18 Aug 2010 15:42
182 lines
8468 bytes
Dzień dobry,
Mam na stronie .php dwa pola na przedział dat. Przy każdym polu jest przycisk
popupowego kalendarzyka. Przy wybraniu daty z kalendarzyka tekst daty powinien
skopiować się do pola. Problem w tym, że o ile w drugim polu ('do kiedy') tak
się dzieje, to w pierwszym polu ('od kiedy') niestety nie. Nie wiem dlaczego.
Patrzę na kod i nie widzę. Firebug mi nic nie pokazuje.

Oto definicja pól:

od <input type="text" id="date_submitted_from" name="date_submitted_from" <?php
echo errorClass('date_submitted_from'); ?> maxlength="10" style="width: 10ex"
value="<?php echo valueFromRequest('date_submitted_from'); ?>"
onblur="validateDate(this, 'date_submitted_from_error');">
<a href="javascript:show_calendar('document.params.date_submitted_from',
document.params.date_submitted_from.value, '../images');"><img
src="../images/cal.gif" width="16" height="16" style="border: 0"
alt="Kalendarz"></a>

- do <input type="text" id="date_submitted_to" name="date_submitted_to" <?php
echo errorClass('date_submitted_to'); ?> maxlength="10" style="width: 10ex"
value="<?php echo valueFromRequest('date_submitted_to'); ?>"
onblur="validateDate(this, 'date_submitted_to_error');">
<a href="javascript:show_calendar('document.params.date_submitted_to',
document.params.date_submitted_to.value, '../images');"><img
src="../images/cal.gif" width="16" height="16" style="border: 0"
alt="Kalendarz"></a>

Kalendarzyk jest includowany tak:

    <script type="text/javascript" src="../include/ts_picker.js">

Dzień w tabelce kalendarzyka jest linkiem:

javascript:window.opener.document.params.date_submitted_from.value='2010.08.31';
window.close();

javascript:window.opener.document.params.date_submitted_to.value='2010.08.31';
window.close();

A oto kod kalendarzyka:

// Title: Timestamp picker
// Description: See the demo at url
// URL: http://us.geocities.com/tspicker/
// Script featured on: http://javascriptkit.com/script/script2/timestamp.shtml
// Version: 1.0
// Date: 12-05-2001 (mm-dd-yyyy)
// Author: Denis Gritcyuk <denis@softcomplex.com>; <tspicker@yahoo.com>
// Notes: Permission given to use this script in any kind of applications if
//    header lines are left unchanged. Feel free to contact the author
//    for feature requests and/or donations
// Translated to Polish by Robert Magdziarz

function show_calendar(str_target, str_datetime, str_images) {
	var arr_months = ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec",
		"Lipiec", "Sierpień", "Wrzesień", "PaĽdziernik", "Listopad", "Grudzień"];
	var week_days = ["Nd", "Po", "Wt", "&#166;r", "Cz", "Pt", "So"];
	var n_weekstart = 1; // day week starts from (normally 0 or 1)
	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() :
str2dt(str_datetime));
	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	var dt_next_month = new Date(dt_datetime);
	dt_next_month.setMonth(dt_datetime.getMonth()+1);
	var dt_firstday = new Date(dt_datetime);
	dt_firstday.setDate(1);
	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
	var dt_lastday = new Date(dt_next_month);
	dt_lastday.setDate(0);
	// html generation (feel free to tune it for your particular application)
	// print calendar header
	var str_buffer = new String (
		"<html>\n"+
		"<head>\n"+
		"	<title>Kalendarz</title>\n"+
		"</head>\n"+
		"<body bgcolor=\"White\">\n"+
		"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
		"<tr><td bgcolor=\"#4682B4\">\n"+
		"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
		"<tr>\n	<td bgcolor=\"#4682B4\"><a
href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+ dt2dtstr(dt_prev_month)+"','"+str_images+"');\">"+
		"<img src=\""+str_images+"/prev.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"previous month\"></a></td>\n"+
		"	<td bgcolor=\"#4682B4\" colspan=\"5\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
		+arr_months[dt_datetime.getMonth()]+"
"+dt_datetime.getFullYear()+"</font></td>\n"+
		"	<td bgcolor=\"#4682B4\" align=\"right\"><a
href=\"javascript:window.opener.show_calendar('"
		+str_target+"', '"+dt2dtstr(dt_next_month)+"','"+str_images+"');\">"+
		"<img src=\""+str_images+"/next.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"next month\"></a></td>\n</tr>\n"
	);
	var dt_current_day = new Date(dt_firstday);
	// print weekdays titles
	str_buffer += "<tr>\n";
	for (var n=0; n<7; n++)
		str_buffer += "	<td bgcolor=\"#87CEFA\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"+
		week_days[(n_weekstart+n)%7]+"</font></td>\n";
	// print calendar table
	str_buffer += "</tr>\n";
	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row heder
		str_buffer += "<tr>\n";
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if (dt_current_day.getDate() == dt_datetime.getDate() &&
					dt_current_day.getMonth() == dt_datetime.getMonth())
					// print current date
					str_buffer += "	<td bgcolor=\"#FFB6C1\" align=\"right\">";
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					str_buffer += "	<td bgcolor=\"#DBEAF5\" align=\"right\">";
				else
					// print working days of current month
					str_buffer += "	<td bgcolor=\"white\" align=\"right\">";

				if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
					"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
				else 
					// print days of other months
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
					"<font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
				str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += "</tr>\n";
	}
	// print calendar footer
	str_buffer +=
		"<form name=\"cal\">\n<tr><td colspan=\"7\" bgcolor=\"#87CEFA\">"+
		"<font color=\"White\" face=\"tahoma, verdana\" size=\"2\">"+
		"</font></td></tr>\n</form>\n" +
		"</table>\n" +
		"</tr>\n</td>\n</table>\n" +
		"</body>\n" +
		"</html>\n";

	var vWinCal = window.open("", "Kalendarz", 
		"width=200,height=250,status=no,resizable=yes,top=200,left=200");
	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}

// datetime parsing and formatting routimes. modify them if you wish other
datetime format
function str2dt (str_datetime) {
	var re_date = /^(\d+)\.(\d+)\.(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Błędny format daty: "+ str_datetime);
	return new Date(RegExp.$1, RegExp.$2-1, RegExp.$3);
}

function dt2dtstr (dt_datetime) {
	var month = dt_datetime.getMonth()+1;
	if (month < 10) {
		month = "0" + month.toString();
	} else {
		month = month.toString();
	}
	var day = dt_datetime.getDate();
	if (day < 10) {
		day = "0" + day.toString();
	} else {
		day = day.toString();
	}
	return (new String (
			dt_datetime.getFullYear()+"."+month+"."+day));
}

-- 
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: problem z popupowym kalendarzykiem
#50215
Author: Peter May
Date: Wed, 18 Aug 2010 19:33
10 lines
1189 bytes
W dniu 2010-08-18 17:42, jivanmuktaWYTNIJTO@poczta.onet.pl pisze:
> Dzień dobry,
> Mam na stronie .php dwa pola na przedział dat. Przy każdym polu jest przycisk
[...]

Zrezygnuj ze swojego rozwiązania i przyjrzyj się temu:
http://piskorz.info/narzedzia/date-picker/

-- 
Peter
Re: problem z popupowym kalendarzykiem
#50216
Author: zpk
Date: Fri, 20 Aug 2010 09:01
16 lines
1704 bytes
On 18 Sie, 21:33, Peter May <peter....@onet.pl> wrote:
> W dniu 2010-08-18 17:42, jivanmuktaWYTNI...@poczta.onet.pl pisze:> Dzień dobry,
> > Mam na stronie .php dwa pola na przedział dat. Przy każdym polu jest przycisk
>
> [...]
>
> Zrezygnuj ze swojego rozwiązania i przyjrzyj się temu:http://piskorz.info/narzedzia/date-picker/
>
> --
> Peter

I co z tego będzie miał?

"IE obsysa, ponieważ ..."

Paweł
Re: problem z popupowym kalendarzykiem
#50217
Author: zpk
Date: Fri, 20 Aug 2010 09:05
24 lines
2017 bytes
On 20 Sie, 11:01, zpk <zpks...@op.pl> wrote:
> On 18 Sie, 21:33, Peter May <peter....@onet.pl> wrote:
>
> > W dniu 2010-08-18 17:42, jivanmuktaWYTNI...@poczta.onet.pl pisze:> Dzień dobry,
> > > Mam na stronie .php dwa pola na przedział dat. Przy każdym polu jest przycisk
>
> > [...]
>
> > Zrezygnuj ze swojego rozwiązania i przyjrzyj się temu:http://piskorz.info/narzedzia/date-picker/
>
> > --
> > Peter
>
> I co z tego będzie miał?
>
> "IE obsysa, ponieważ ..."
>
> Paweł

Za szybko napisałem. U mnie na IE8 działa.
Zresztą, co do IE8 to dodam, że szybkością i jakością renderowanej
grafiki to  FF obsysa i to wyraźnie, niestety.

Paweł
Re: problem z popupowym kalendarzykiem
#50218
Author: Peter May
Date: Fri, 20 Aug 2010 11:09
30 lines
2000 bytes
W dniu 2010-08-20 11:05, zpk pisze:
> On 20 Sie, 11:01, zpk<zpks...@op.pl>  wrote:
>> On 18 Sie, 21:33, Peter May<peter....@onet.pl>  wrote:
>>
>>> W dniu 2010-08-18 17:42, jivanmuktaWYTNI...@poczta.onet.pl pisze:>  Dzień dobry,
>>>> Mam na stronie .php dwa pola na przedział dat. Przy każdym polu jest przycisk
>>
>>> [...]
>>
>>> Zrezygnuj ze swojego rozwiązania i przyjrzyj się temu:http://piskorz.info/narzedzia/date-picker/
>>
>>> --
>>> Peter
>>
>> I co z tego będzie miał?
>>
>> "IE obsysa, ponieważ ..."
>>
>> Paweł
>
> Za szybko napisałem. U mnie na IE8 działa.
> Zresztą, co do IE8 to dodam, że szybkością i jakością renderowanej
> grafiki to  FF obsysa i to wyraźnie, niestety.

Obecnie część przeglądarek akceptuje już input type="date" i nie będzie 
potrzebny datepicker :P No chyba, że jako alternatywa w przypadku braku 
obsługi input type="date".

-- 
Peter
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads