powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Кто решится помочь?
4 сообщений из 4, страница 1 из 1
(JS) Кто решится помочь?
    #33064903
копосов нв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть календарь у каждой даты 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
(JS) Кто решится помочь?
    #33065125
Фотография 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>
...
Рейтинг: 0 / 0
(JS) Кто решится помочь?
    #33066367
копосов нв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(JS) Кто решится помочь?
    #33066597
копосов нв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Кто решится помочь?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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