Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / календарь: чтобы в текстовом поле вызывался onchange / 23 сообщений из 23, страница 1 из 1
01.11.2008, 11:33
    #35630004
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
здравствуйте,

мне календарь какой-то дали, там popup_lib.js и dateselector.js

используется так:

Код: plaintext
1.
2.
3.
4.
5.
		<input size="10" id="ddt" name="ddt" type="text" value="${param.ddt}"
			onchange="window.open('${queueDUrl}&ddt=' + this.value, self.name);"
		/>
		<img onclick="popUpCalendar(this, document.getElementById('ddt'), 'dd.mm.yyyy');"
			height="18" hspace="3" src="date_selector.gif" 
			width="16" border="0"/>

onchange при выборе даты не случается, как и следовало ожидать.

как сделать, не меняя чужой код, чтобы происходил переход на другую страницу?

или только меняя?



есичо, в спойлере - код календаря, который мне подсунули


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
var	fixedX = - 1 ;
var	fixedY = - 1 ;
var startAt =  1 ;
var	crossobj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, ctlToPlaceValue, ctlNow, dateFormat, nStartingYear
var	bPageLoaded=false
var	today = new	Date()
var	dateNow  = today.getDate()
var	monthNow = today.getMonth()
var	yearNow  = today.getYear()
var bShow = false;

/*** For language packs, month/day names should be changed here  ***/
var	monthName =	new Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь","Ноябрь", "Декабрь")
var dayName = new Array("П","Вт","Ср","Ч","Пт","Сб","Вс")

if (dom)
{
	document.write ("<div onclick='bShow=true' id='calendar' class='div-style'>\n");
	document.write ("<table width='140' class='table-style'>\n");
	document.write ("<tr class='title-background-style' >\n");
	document.write ("	<td width='100%'>\n");
	document.write ("	<table width='100%'>\n");
	document.write ("		<tr>\n");
	document.write ("			<td class='title-style'>\n");
	document.write ("				<span id='caption'></span>\n");
	document.write ("			</td>\n");
	document.write ("		</tr>\n");
	document.write ("		</table>\n");
	document.write ("	</td>\n");
	document.write ("</tr>\n");
	document.write ("<tr>\n");
	document.write ("	<td width='100%' class='body-style'>\n");
	document.write ("		<span id='content'></span>\n");
	document.write ("	</td>\n");
	document.write ("</tr>");
	document.write ("</table>")
	document.write ("</div>");
}

function hideCalendar() {
	crossobj.visibility="hidden"
	showElement( 'SELECT' );
	showElement( 'APPLET' );
}

function padZero(num) {
	return (num	<  10 )? ' 0 ' + num : num ;
}

function constructDate(d,m,y)
{
	sTmp = dateFormat
	sTmp = sTmp.replace	("dd","<e>")
	sTmp = sTmp.replace	("d","<d>")
	sTmp = sTmp.replace	("<e>",padZero(d))
	sTmp = sTmp.replace	("<d>",d)
	sTmp = sTmp.replace	("mmm","<o>")
	sTmp = sTmp.replace	("mm","<n>")
	sTmp = sTmp.replace	("m","<m>")
	sTmp = sTmp.replace	("<m>",m+ 1 )
	sTmp = sTmp.replace	("<n>",padZero(m+ 1 ))
	sTmp = sTmp.replace	("<o>",monthName[m])
	return sTmp.replace ("yyyy",y)
}

function closeCalendar() {
	var	sTmp

	hideCalendar();
	ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)
}

function incMonth () {
	monthSelected++
	if (monthSelected> 11 ) {
		monthSelected= 0 
		yearSelected++
	}
	constructCalendar()
}

function decMonth () {
	monthSelected--
	if (monthSelected< 0 ) {
		monthSelected= 11 
		yearSelected--
	}
	constructCalendar()
}



/*** calendar ***/

function constructCalendar () {
	var dateMessage
	var	startDate =	new	Date (yearSelected,monthSelected, 1 )
	var	endDate = new Date (yearSelected,monthSelected+ 1 , 1 );
	endDate = new Date (endDate	- ( 24 * 60 * 60 * 1000 ));
	numDaysInMonth = endDate.getDate()

	datePointer	=  0 
	dayPointer = startDate.getDay() - startAt

	if (dayPointer <  0 )
	{
		dayPointer =  6 
	}

	sHTML = "<table width='100%' border='0' cellpadding='1' cellspacing='1' class='body-style'><tr>"

	for	(i= 0 ; i< 7 ; i++) {
		sHTML += "<td width='15' align='center'><B>"+ dayName[i]+"</B></td>"
	}
	sHTML +="</tr><tr>"

	for	( var i= 1 ; i<=dayPointer;i++ )
	{
		sHTML += "<td> </td>"
	}

	for	( datePointer= 1 ; datePointer<=numDaysInMonth; datePointer++ )
	{
		dayPointer++;
		sHTML += "<td width='15' align='center'>"

		var sStyle="normal-day-style"; //regular day

		if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow)) //today
		{ sStyle = "current-day-style"; }

		//selected day
		if ((datePointer==odateSelected) &&	(monthSelected==omonthSelected) && (yearSelected==oyearSelected))
		{ sStyle += " selected-day-style"; }

		sHint = ""

		var regexp= /\"/g
		sHint=sHint.replace(regexp,""")

		sHTML += "<a class='"+sStyle+"' title=\"" + sHint + "\" href='javascript:dateSelected="+datePointer+";closeCalendar();'>" + datePointer + "</a>"
		if ((dayPointer+startAt) %  7  == startAt) {
			sHTML += "</tr><tr>"
		}
	}

	document.getElementById("content").innerHTML   = sHTML
	document.getElementById("spanMonth").innerHTML = monthName[monthSelected]
	document.getElementById("spanYear").innerHTML = yearSelected
}

function popUpCalendar(ctl,	ctl2, format) {
	var	leftpos= 0 
	var	toppos= 0 

  DocumentRegisterEvents();
	if (bPageLoaded)
	{
		if ( crossobj.visibility ==	"hidden" ) {
			ctlToPlaceValue = ctl2
			dateFormat=format;

			formatChar = " "
			aFormat = dateFormat.split(formatChar)
			if (aFormat.length< 3 )
			{
				formatChar = "/"
				aFormat = dateFormat.split(formatChar)
				if (aFormat.length< 3 )
				{
					formatChar = "."
					aFormat = dateFormat.split(formatChar)
					if (aFormat.length< 3 )
					{
						formatChar = "-"
						aFormat = dateFormat.split(formatChar)
						if (aFormat.length< 3 )
						{
							// invalid date format
							formatChar=""
						}
					}
				}
			}

			tokensChanged =  0 
			if ( formatChar != "" )
			{
				// use user's date
				aData = ctl2.value.split(formatChar)

				for	(i= 0 ;i< 3 ;i++)
				{
					if ((aFormat[i]=="d") || (aFormat[i]=="dd"))
					{
						dateSelected = parseInt(aData[i],  10 )
						tokensChanged ++
					}
					else if ((aFormat[i]=="m") || (aFormat[i]=="mm"))
					{
						monthSelected = parseInt(aData[i],  10 ) -  1 
						tokensChanged ++
					}
					else if (aFormat[i]=="yyyy")
					{
						yearSelected = parseInt(aData[i],  10 )
						tokensChanged ++
					}
					else if (aFormat[i]=="mmm")
					{
						for	(j= 0 ; j< 12 ;	j++)
						{
							if (aData[i]==monthName[j])
							{
								monthSelected=j
								tokensChanged ++
							}
						}
					}
				}
			}

			if ((tokensChanged!= 3 )||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
			{
				dateSelected = dateNow
				monthSelected = monthNow
				yearSelected = yearNow
			}

			odateSelected=dateSelected
			omonthSelected=monthSelected
			oyearSelected=yearSelected

			aTag = ctl
			do {
				aTag = aTag.offsetParent;
				leftpos += aTag.offsetLeft;
				toppos += aTag.offsetTop;
			} while(aTag.tagName!="BODY");

			crossobj.left = fixedX==- 1  ? ctl.offsetLeft	+ leftpos :	fixedX
			crossobj.top = fixedY==- 1  ?	ctl.offsetTop + toppos + ctl.offsetHeight +	 2  :	fixedY
			constructCalendar ( 1 , monthSelected, yearSelected);
			crossobj.visibility=(dom||ie)? "visible" : "show"
			
			hideElement( 'SELECT', document.getElementById("calendar") );
			hideElement( 'APPLET', document.getElementById("calendar") );			

			bShow = true;
		}
	}
	else
	{
		DateSelectorInit()
		popUpCalendar(ctl, ctl2, format)
	}
}

function DateSelectorInit()	{
	if (!ns4)
	{
		if (!ie) { yearNow +=  1900 	}

		crossobj=(dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar
		hideCalendar()

		monthConstructed=false;
		yearConstructed=false;

		sHTML1 = "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
		sHTML1 += "<tr>\n";
		sHTML1 += "	<td width='5'><span id='spanLeft' class='title-control-normal-style' onclick='javascript:decMonth()'><</span></td>\n";
		sHTML1 += "	<td width='100%' align='center'><span id='spanMonth' class='title-control-normal-style'></span> <span id='spanYear' class='title-control-normal-style'></span></td>\n";
		sHTML1 += "	<td width='5'><span id='spanRight' class='title-control-normal-style' onclick='incMonth()'>></span></td>\n";
		sHTML1 += "</tr>\n";
		sHTML1 += "</table>\n";

		document.getElementById("caption").innerHTML  = sHTML1

		bPageLoaded=true
	}
}

function DocumentRegisterEvents()
{
  document.onkeypress = function hideCalender_Trap1 () 
  {
	  if (event.keyCode ==  27 )
	  {
      hideCalendar();
	  }
  }

  document.onclick = function hideCalender_Trap2()
  {
	  if (!bShow)
	  {
      hideCalendar();
	  }
	  bShow = false
  }
}


...
Рейтинг: 0 / 0
01.11.2008, 11:56
    #35630072
Di_LIne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Ченить типа?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<script>
function OnExec()
{
popUpCalendar(this, document.getElementById('ddt'), 'dd.mm.yyyy');;
window.open('${queueDUrl}&ddt=' + this.value, self.name);
}
</script>

<input size="10" id="ddt" name="ddt" type="text" value="${param.ddt}"
			onchange="window.open('${queueDUrl}&ddt=' + this.value, self.name);"
		/>
		<img onclick="OnExec()"
			height="18" hspace="3" src="date_selector.gif" 
			width="16" border="0"/>
...
Рейтинг: 0 / 0
01.11.2008, 11:57
    #35630075
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Di_LIneЧенить типа?чо, правда??

ща проверю! это будет волшебство какое-то! )
...
Рейтинг: 0 / 0
01.11.2008, 11:59
    #35630082
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
нет!!
календарь попапнется и сразу window.open сработает!

не то. нужно чтобы window,open сработал в тот момент, когда в календаре дату выберешь
...
Рейтинг: 0 / 0
01.11.2008, 12:04
    #35630106
Di_LIne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
feddнет!!
календарь попапнется и сразу window.open сработает!

не то. нужно чтобы window,open сработал в тот момент, когда в календаре дату выберешь
Ну заремапь этот popUpCalendar и будит щастье...
...
Рейтинг: 0 / 0
01.11.2008, 12:05
    #35630113
Di_LIne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Тогда так:
Код: plaintext
1.
2.
3.
4.
5.
onchange="window.open('${queueDUrl}&ddt=' + this.value, self.name);"
		/>
		<img onclick="window.open('${queueDUrl}&ddt=' + this.value, self.name);"
			height="18" hspace="3" src="date_selector.gif" 
			width="16" border="0"/>
И в-аще - пышы панятно, что нужно-то...
...
Рейтинг: 0 / 0
01.11.2008, 12:07
    #35630122
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Di_LIneИ в-аще - пышы панятно, что нужно-то...я думал, понятно...

я пропобую переопределить closeCalendar
...
Рейтинг: 0 / 0
01.11.2008, 13:24
    #35630361
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
получилось!
Ночью воры проникли в квартиру Николая Валуева и вынесли все - побои, страх, боль и унижение
...
Рейтинг: 0 / 0
01.11.2008, 14:14
    #35630501
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Код: plaintext
1.
2.
3.
4.
function closeCalendar() {
	hideCalendar();
	ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)
	ctlToPlaceValue.onchange();
}
...
Рейтинг: 0 / 0
01.11.2008, 14:16
    #35630505
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Konst_One
Код: plaintext
1.
2.
3.
4.
function closeCalendar() {
	hideCalendar();
	ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)
	ctlToPlaceValue.onchange();
}
супер :)

спасибо
...
Рейтинг: 0 / 0
01.11.2008, 14:19
    #35630521
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
господа, у меня еще проблема, долго тупил, отчего, так как не умею отлаживать джаваскрипт: у меня один из параметров запроса страницы называется i, и этот календарь отказывается работать.

дотумкал сделать i=null;, теперь работает.

а как правильно поступать в таких случаях? я так понял, переменная где-то в коде календаря или попап_либ конфликтует с параметром http запроса
...
Рейтинг: 0 / 0
01.11.2008, 14:27
    #35630547
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Код: plaintext
var i=null;
...
Рейтинг: 0 / 0
01.11.2008, 14:30
    #35630561
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Konst_One
Код: plaintext
var i=null;
ну, я так и сделал...
...
Рейтинг: 0 / 0
01.11.2008, 14:38
    #35630591
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
не ясно, что и где ты пытаешься сделать, поэтому трудно тебе подсказать. конфликта с кодом самого календаря по имени переменной быть не может, так как там такой глобальной переменной нет.
...
Рейтинг: 0 / 0
01.11.2008, 15:07
    #35630701
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
feddдолго тупил, отчего, так как не умею отлаживать джаваскрипт
поставь firefox и к нему расширение firebug, и будет тебе щастье...
...
Рейтинг: 0 / 0
01.11.2008, 15:11
    #35630723
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Konst_Oneконфликта с кодом самого календаря по имени переменной быть не может, так как там такой глобальной переменной нет.а как отличается глобальная переменная от неглобальной?
...
Рейтинг: 0 / 0
01.11.2008, 15:12
    #35630725
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
illionfeddдолго тупил, отчего, так как не умею отлаживать джаваскрипт
поставь firefox и к нему расширение firebug, и будет тебе щастье...о, спасибо
...
Рейтинг: 0 / 0
01.11.2008, 15:15
    #35630739
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
глобальная - объявлена вне функций на уровне модуля
локальная - внутри какой-либо функции
...
Рейтинг: 0 / 0
01.11.2008, 15:18
    #35630753
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
буквально последний вопрос!
инициализируются ли сами автоматически параметры запроса как глобальные переменные с соответствующими именами?
...
Рейтинг: 0 / 0
01.11.2008, 15:22
    #35630774
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
какие такие параметры запроса? пиши понятней
...
Рейтинг: 0 / 0
01.11.2008, 15:28
    #35630795
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Konst_Oneкакие такие параметры запроса? пиши понятнейне могу :)

я не знаю иного названия для того, что выделено

queue.jsp? a =266& m =9016& i =0& ddt =01.11.2008

только параметры http запроса
...
Рейтинг: 0 / 0
01.11.2008, 15:30
    #35630803
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
queue.jsp - внутри смотри, мне сия страница недоступна ;)
...
Рейтинг: 0 / 0
01.11.2008, 15:33
    #35630812
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
календарь: чтобы в текстовом поле вызывался onchange
Konst_One, тебе и так уже большое спасибо! да у меня практически вопросы и кончились :) все работает
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / календарь: чтобы в текстовом поле вызывался onchange / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]