Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Кто решится помочь? / 4 сообщений из 4, страница 1 из 1
14.05.2005, 15:16
    #33064903
копосов нв
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Кто решится помочь?
Есть календарь у каждой даты checkbox, чтобы можно было выбрать за месяц не более 5 дат. Для этого пишу JS. Смысл такой при нажатии считаю количество выделенных элементов. Если выделенных меньше 5 тогда выделение принимается, если больше 5 тогда необходимо отменить check – вот тут я и засел?
вот сам файл
Код: 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.
<html>
<head>
<title>Добавить отчётные даты</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link href=http://w2kkoposovnv/ora/style.css rel="STYLESHEET" type="text/css">
<SCRIPT name="javascript">
function CheckSumDates(chk_name) {
       var elements = document.datesForm.elements.length;
	var t =  0 ;
       for(i= 0 ; i<elements; i++) {
              if(document.datesForm.elements[i].type == chk_name && document.datesForm.elements[i].checked == true) {
                     t++;
              }
       }
	if (t> 5 ) {
              alert('Необходимо помнить, что количество отчётных дат за период должно быть не больше 5.')
       	return false;
 	} else {
       	return true;
	}
}
</SCRIPT>
</head>
<body lang=RU>
<script type='text/javascript' src='awjsmenugold10.js'></script>

<br>
<br>
<FORM name="datesForm" action="dates.php" method="post">
<table width="100%" border="0" cellspacing="1" cellpadding="0">
  <tr>
    <td width= 10 %>
<fieldset style="width: 10%; BORDER-RIGHT: rgb(192,192,192) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(192,192,192) 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: rgb(192,192,192) 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: rgb(192,192,192) 1px solid">
<legend><font color=rgb( 104 , 104 , 104 )><b>Отчётные даты:</font></legend>

<table bordercolor="#FFFFFF" border= 0  cellspacing= 1  cellpadding= 1   style="font-size: 10 pt; color: white; font-family: verdana">
<tr bgcolor=silver>
        <td colspan= 7  align=center>
        <b>Апрель  2005 </b>
        </td>
</tr>
<tr align=center bgcolor=silver>
        <td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td><td>Сб</td><td>Вс</td>
</tr>
<tr align=left bgcolor=rgb( 8 , 66 , 123 )>
	<td> </td>
	<td> </td>
	<td> </td>
	<td> </td>
	<td><input name="dates[]" type="checkbox" value="01.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 1 </td>
	<td><input name="dates[]" type="checkbox" value="02.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 2 </td>
	<td><input name="dates[]" type="checkbox" value="03.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 3 </td>
	</tr>
<tr align=left bgcolor=rgb( 8 , 66 , 123 )>
	<td><input name="dates[]" type="checkbox" value="04.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 4 </td>
	<td><input name="dates[]" type="checkbox" value="05.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 5 </td>
	<td><input name="dates[]" type="checkbox" value="06.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 6 </td>
	<td><input name="dates[]" type="checkbox" value="07.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 7 </td>
	<td><input name="dates[]" type="checkbox" value="08.04.2005" checked onClick="CheckSumDates('checkbox'); return true;"> 8 </td>
	<td><input name="dates[]" type="checkbox" value="09.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 9 </td>
	<td><input name="dates[]" type="checkbox" value="10.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 10 </td>
	</tr>
<tr align=left bgcolor=rgb( 8 , 66 , 123 )>
	<td><input name="dates[]" type="checkbox" value="11.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 11 </td>
	<td><input name="dates[]" type="checkbox" value="12.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 12 </td>
	<td><input name="dates[]" type="checkbox" value="13.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 13 </td>
	<td><input name="dates[]" type="checkbox" value="14.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 14 </td>
	<td><input name="dates[]" type="checkbox" value="15.04.2005" checked onClick="CheckSumDates('checkbox'); return true;"> 15 </td>
	<td><input name="dates[]" type="checkbox" value="16.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 16 </td>
	<td><input name="dates[]" type="checkbox" value="17.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 17 </td>
	</tr>
<tr align=left bgcolor=rgb( 8 , 66 , 123 )>
	<td><input name="dates[]" type="checkbox" value="18.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 18 </td>
	<td><input name="dates[]" type="checkbox" value="19.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 19 </td>
	<td><input name="dates[]" type="checkbox" value="20.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 20 </td>
	<td><input name="dates[]" type="checkbox" value="21.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 21 </td>
	<td><input name="dates[]" type="checkbox" value="22.04.2005" checked onClick="CheckSumDates('checkbox'); return true;"> 22 </td>
	<td><input name="dates[]" type="checkbox" value="23.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 23 </td>
	<td><input name="dates[]" type="checkbox" value="24.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 24 </td>
	</tr>
<tr align=left bgcolor=rgb( 8 , 66 , 123 )>
	<td><input name="dates[]" type="checkbox" value="25.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 25 </td>
	<td><input name="dates[]" type="checkbox" value="26.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 26 </td>
	<td><input name="dates[]" type="checkbox" value="27.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 27 </td>
	<td><input name="dates[]" type="checkbox" value="28.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 28 </td>
	<td><input name="dates[]" type="checkbox" value="29.04.2005" checked onClick="CheckSumDates('checkbox'); return true;"> 29 </td>
	<td><input name="dates[]" type="checkbox" value="30.04.2005" onClick="CheckSumDates('checkbox'); return true;"> 30 </td>
	<td> </td>
	
</tr>
<tr bgcolor=silver>
        <td colspan= 7  align=center style="font-size: 8pt;"><b>
        <a href="dates.php?month=4-2004" title="Год назад" style="color:black;text-decoration: none;"><<</a> 
        <a href="dates.php?month=3-2005" title="Месяц назад" style="color:black;text-decoration: none;"><</a> 
        <a href="dates.php" title="Текущий месяц" style="color:black;text-decoration: none;">•</a> 
        <a href="dates.php?month=5-2005" title="Месяц вперед" style="color:black;text-decoration: none;">></a> 
        <a href="dates.php?month=4-2006" title="Год вперед" style="color:black;text-decoration: none;">>></a>
        </b></td>

</tr>
</table></fieldset></td>
    <td valign=top style="PADDING-left: 5px;PADDING-top: 14px;">
	       <p style="PADDING-left: 5px;PADDING-RIGHT: 5px;" align="justify">
        <font style="font: 11pt" color=rgb( 140 , 140 , 140 )>! Для добавления отчётных дат на период необходимо выделить поля соответствующих дат в календаре. После чего утвердительно нажать кнопку "Принять".</font>
       </p>
       <p style="PADDING-left: 5px;PADDING-RIGHT: 5px;" align="justify">
        <font style="font: 11pt" color=rgb( 140 , 140 , 140 )>! Для изменения или удаления отчётных дат на период необходимо отменить выделение полей соответствующих дат в календаре. После чего утвердительно нажать кнопку "Принять".</font>
       </p>
       <p style="PADDING-left: 5px;PADDING-RIGHT: 5px;"  align="justify">
        <font style="font: 11pt" color=rgb( 140 , 140 , 140 )>! Необходимо помнить, что количество отчётных дат за период должно быть не больше  5 , в противном случае система укажет на допущенную ошибку.</font>
       </p>
		<table bgcolor=rgb( 240 , 240 , 240 ) width="100%" border="0" cellpadding="0" cellspacing="1" style="BORDER-RIGHT: rgb(192,192,192) 1px solid; BORDER-LEFT: rgb(192,192,192) 1px solid; BORDER-TOP:rgb(192,192,192) 1px solid; BORDER-BOTTOM: rgb(192,192,192) 1px solid;">
	<tr><td align="center"><input type="submit" value="Принять"></td></tr>
	</table>
	    </td>
  </tr>
</table>
</form>
</body>
</html>
...
Рейтинг: 0 / 0
14.05.2005, 16:20
    #33065125
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Кто решится помочь?
Чуток подправленная версия скрипта:
Код: 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.
function CheckSumDates(chk_name, box_o) {
       var elements = document.datesForm.elements.length;
        var t =  0 ;
       for(i= 0 ; i<elements; i++) {
              if(document.datesForm.elements[i].type == chk_name && document.datesForm.elements[i].checked == true) {
                     t++;
              }
       }
        if (t> 5 ) {
              alert('Необходимо помнить, что количество отчётных дат за период должно быть не больше 5.');
              box_o.checked=false;
              return false;
        } else {
                if(t== 5 ){
                    for(i= 0 ;i<elements;i++){
                        var o=document.datesForm.elements[i];
                        if(o.type == chk_name && ! o.checked) o.disabled=true;
                    }
                 }
                 if(t< 5 ){
                    for(i= 0 ;i<elements;i++){
                        var o=document.datesForm.elements[i];
                        if(o.type == chk_name) o.disabled=false;
                    }
                }
                return true;
        }
}

И далее в HTML:
Код: plaintext
1.
<td><input name="dates[]" type="checkbox" value="01.04.2005" onClick="CheckSumDates('checkbox', this) "> 1 </td>
...
Рейтинг: 0 / 0
16.05.2005, 10:18
    #33066367
копосов нв
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Кто решится помочь?
2 XM
ок, я посмотрю, вот моё решение (правда отменяет выделение другого элемента, а не текущего, у меня допустимо т.к. на форме нет из других функциональных областей checkbox'ов)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function CheckSumDates(chk_name) {
       var elements = document.datesForm.elements.length;
	var t =  0 ;
       for(i= 0 ; i<elements; i++) {
              if(document.datesForm.elements[i].type == chk_name && document.datesForm.elements[i].checked == true) {
                     t++;
			if (t> 5 ) {
		              alert('Необходимо помнить, что количество отчётных дат за период должно быть не больше 5.');
                            document.datesForm.elements[i].checked = false;
			}
              }
       }
}
...
Рейтинг: 0 / 0
16.05.2005, 11:32
    #33066597
копосов нв
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Кто решится помочь?
XMЧуток подправленная версия скрипта:
Код: 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.
function CheckSumDates(chk_name, box_o) {
       var elements = document.datesForm.elements.length;
        var t =  0 ;
       for(i= 0 ; i<elements; i++) {
              if(document.datesForm.elements[i].type == chk_name && document.datesForm.elements[i].checked == true) {
                     t++;
              }
       }
        if (t> 5 ) {
              alert('Необходимо помнить, что количество отчётных дат за период должно быть не больше 5.');
              box_o.checked=false;
              return false;
        } else {
                if(t== 5 ){
                    for(i= 0 ;i<elements;i++){
                        var o=document.datesForm.elements[i];
                        if(o.type == chk_name && ! o.checked) o.disabled=true;
                    }
                 }
                 if(t< 5 ){
                    for(i= 0 ;i<elements;i++){
                        var o=document.datesForm.elements[i];
                        if(o.type == chk_name) o.disabled=false;
                    }
                }
                return true;
        }
}

И далее в HTML:
Код: plaintext
1.
<td><input name="dates[]" type="checkbox" value="01.04.2005" onClick="CheckSumDates('checkbox', this) "> 1 </td>


Да, твой скрипт лучше! Очень понраилась идея не активных элементов при t=5
Спасибо!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Кто решится помочь? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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