Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Дата
 
 автор: Proger   (16.06.2007 в 02:28)   письмо автору
 
 

Вот столкнулся с такой проблемой и что-то не могу найти нигде скрипта простейшего на js...

Есть поле при добавлении записи в блоге: дата написания записи, дык там у меня так интерестно оказываеться когда делал не заметил стоят три выпадающих меню:
первое - число оно 1-31 может принимать значения
второе - месяц - ну там всё понятно, месяца написанные буквами
третье - год - тут указан диапозон в 2000 по 2007


НО, это всё тупо простые option, а мне нужно чтобы я выбрал февраль скажем и он мне 28 дней только показал на выбор, и если год високосный, то 29, а то как-то неточно и тупо получаеться! Можно добавить запись 31 февраля 2001 года =)
Помогите плиз!

   
 
 автор: Proger   (17.06.2007 в 01:19)   письмо автору
 
   для: Proger   (16.06.2007 в 02:28)
 

Совершенно случайно нашёл это скрипт в форуме php =) Спасибо всем.

   
 
 автор: Proger   (17.06.2007 в 01:31)   письмо автору
 
   для: Proger   (17.06.2007 в 01:19)
 

то что нашел решил проверить, не работает :(


<script language='javascript'> 
var mon=['январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь']; 
function SetDay(d,m,y) { 
if (m==2 && y%4==0 && y!=0) {j=29;}else if (m==2) {j=28;}else if (((m%2==1) && (m>=8)) || ((m%2==0) && (m<8))) {j=30;}else {j=31;}if (m==2 && y%4==0 && y!=0) {j=29;} 
else if (m==2) {j=28;} 
else if (m%2==1) {j=30;} 
else {j=31;} 
str='<select class=form2 name=day>'; 
str+='<option value=\'\'>'; 
for (i=1; i<=j; i++) { 
if (d==i) 
str+='<option value='+i+' selected>'+i; 
else 
str+='<option value='+i+'>'+i; 

str+='</select>'; 
document.getElementById('day').innerHTML=str; 

function GetDMY() { 
d=document.forma('newday').value; 
m=document.forma('newmonth').value; 
y=document.forma('newyear').value; 
SetDay(d,m,y); 

function SetMonth(d,m,y) { 
str='<select onChange=GetDMY()  name=month>'; 
str+='<option value=\'\'>'; 
for (i=0; i<=11; i++) { 
j=Number(i)+1; 
if (m==j) 
str+='<option value='+j+' selected>'+mon[i]; 
else 
str+='<option value='+j+'>'+mon[i]; 

str+='</select>'; 
document.getElementById('month').innerHTML=str; 

function SetYear(d,m,y) { 
str='<select onChange=GetDMY() name=year>'; 
str+='<option value=\'\'>'; 
for (i=1927; i<=2007; i++) { 
if (y==i) 
str+='<option value='+i+' selected>'+i; 
else 
str+='<option value='+i+'>'+i; 

str+='</select>'; 
document.getElementById('year').innerHTML=str; 

</script> 

<tr><td valign=top >День рождения: <td><table border=0 cellPadding=1 cellSpacing=0><td id='day'></td><td id='month'></td><td id='year'></td></table> <</select> 
<script> 
SetDay(0,0,0); 
SetMonth(0,0,0); 
SetYear(0,0,0); 
</script> 


в чем ошибка? поправте плиз!

   
 
 автор: ilyaILF   (17.06.2007 в 11:13)   письмо автору
 
   для: Proger   (17.06.2007 в 01:31)
 

Ошибка у вас во-первых идет в пересечении имен, не следует называть <select name="year"> и в другом случае <td id="year"> одинаковыми именами, потому, что броузеры иногда id приравнивают к name. Назовите <select name="myselect"> например.
Далее у вас в коде javascript идет несколько непонятная запись:
function GetDMY() {  
d=document.forma('newday').value;  
... 
SetDay(d,m,y);  
}
неясно откуда она взялась и что означает, если уж на то пошло, то правильнее будет записать:
function GetDMY() {  
d=(dd=document.getElementsByName('myday')[0]).options[dd.selectedIndex].value;  
m=(mm=document.getElementsByName('mymonth')[0]).options[mm.selectedIndex].value;  
y=(yy=document.getElementsByName('myyear')[0]).options[yy.selectedIndex].value;  
SetDay(d,m,y);  
}

   
 
 автор: Proger   (17.06.2007 в 16:12)   письмо автору
 
   для: ilyaILF   (17.06.2007 в 11:13)
 

Плиз, выложите полный правильный вариант кода.

   
 
 автор: ilyaILF   (17.06.2007 в 16:21)   письмо автору
 
   для: Proger   (17.06.2007 в 16:12)
 

Скажем так, это измененный ваш вариант кода:
<td valign=top >День рождения: <td><table border=0 cellPadding=1 cellSpacing=0><td id='day'></td><td id='month'></td><td id='year'></td></table>   

<script type="text/javascript">  
var mon=['январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь'];  
function SetDay(d,m,y) {  
if (m==2 && y%4==0 && y!=0) {j=29;}else if (m==2) {j=28;}else if (((m%2==1) && (m>=8)) || ((m%2==0) && (m<8))) {j=30;}else {j=31;}if (m==2 && y%4==0 && y!=0) {j=29;}  
else if (m==2) {j=28;}  
else if (m%2==1) {j=30;}  
else {j=31;}  
str='<select class=form2 name=myday>';  
str+='<option value=\'\'>';  
for (i=1; i<=j; i++) {  
if (d==i)  
str+='<option value='+i+' selected>'+i;  
else  
str+='<option value='+i+'>'+i;  
}  
str+='</select>';  
document.getElementById('day').innerHTML=str;  
}
function GetDMY() {  
d=(dd=document.getElementsByName('myday')[0]).options[dd.selectedIndex].value;  
m=(mm=document.getElementsByName('mymonth')[0]).options[mm.selectedIndex].value;  
y=(yy=document.getElementsByName('myyear')[0]).options[yy.selectedIndex].value;  
SetDay(d,m,y);  
}  
function SetMonth(d,m,y) {  
str='<select onChange=GetDMY()  name=mymonth>';  
str+='<option value=\'\'>';  
for (i=0; i<=11; i++) {  
j=Number(i)+1;  
if (m==j)  
str+='<option value='+j+' selected>'+mon[i];  
else  
str+='<option value='+j+'>'+mon[i];  
}  
str+='</select>';  
document.getElementById('month').innerHTML=str;  
}  
function SetYear(d,m,y) {  
str='<select onChange=GetDMY() name=myyear>';  
str+='<option value=\'\'>';  
for (i=1927; i<=2007; i++) {  
if (y==i)  
str+='<option value='+i+' selected>'+i;  
else  
str+='<option value='+i+'>'+i;  
}  
str+='</select>';  
document.getElementById('year').innerHTML=str;  
}  
</script>  

<script type="text/javascript">  
SetDay(0,0,0);  
SetMonth(0,0,0);  
SetYear(0,0,0);  
</script>

   
 
 автор: Proger   (17.06.2007 в 20:05)   письмо автору
 
   для: ilyaILF   (17.06.2007 в 16:21)
 

СПАСИБО огромное!!! Очень помогли!
Спасибо! Спасибо! Спасибо!

P.S. я же сказал, что код не мой я его на этом форуме в разделе "php" случайно нашел ;)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования