Tenho um script d eum calendario que peguei na internet que esta tendo dois problemas que já rachei a cabeça para entender e não consegui achar o erro.
1) No internet explorer, quando escolho qualquer data menor 10, ele adiciona um 0 antes do numero e faz, por exemplo, 09. Porem, quanda a data é a data do dia, ele não esta adicionando o 0. Daí, o script barra o prosseguimento do mesmo.
2) No chrome, aontece o seguinte. O script tem um validador para verificar se a data é maior ou menor que a data atual. Se menor que a data atual, ele barra a execução. Se a data foer posterior le deverá prosseguir com o screip. Porem, no chrome, qualquer data esta dando que é maior que a data do dia.
Calendario.js
// construindo o calendário
function popdate(obj,div,tam,ddd)
{
if (ddd)
{
day = ""
mmonth = ""
ano = ""
c = 1
char = ""
for (s=0;s<parseInt(ddd.length);s++)
{
char = ddd.substr(s,1)
if (char == "/")
{
c++;
s++;
char = ddd.substr(s,1);
}
if (c==1) day += char
if (c==2) mmonth += char
if (c==3) ano += char
}
ddd = mmonth + "/" + day + "/" + ano
}
if(!ddd) {today = new Date()} else {today = new Date(ddd)}
date_Form = eval (obj)
if (date_Form.value == "") { date_Form = new Date()} else {date_Form = new Date(date_Form.value)}
ano = today.getFullYear();
mmonth = today.getMonth ();
day = today.toString ().substr (8,2)
umonth = new Array ("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")
days_Feb = (!(ano % 4) ? 29 : 28)
days = new Array (31, days_Feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
if ((mmonth < 0) || (mmonth > 11)) alert(mmonth)
if ((mmonth - 1) == -1) {month_prior = 11; year_prior = ano - 1} else {month_prior = mmonth - 1; year_prior = ano}
if ((mmonth + 1) == 12) {month_next = 0; year_next = ano + 1} else {month_next = mmonth + 1; year_next = ano}
txt = "<table bgcolor='#efefff' style='border:solid #330099; border-width:2' cellspacing='0' cellpadding='3' border='0' width='"+tam+"' height='"+tam*1.1 +"'>"
txt += "<tr bgcolor='#FFFFFF'><td colspan='7' align='center'><table border='0' cellpadding='0' width='100%' bgcolor='#FFFFFF'><tr>"
txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano-1).toString())+"') class='Cabecalho_Calendario' title='Ano Anterior'><<</a></td>"
txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_prior+1).toString() + "/" + year_prior.toString())+"') class='Cabecalho_Calendario' title='Mês Anterior'><</a></td>"
txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_next+1).toString() + "/" + year_next.toString())+"') class='Cabecalho_Calendario' title='Próximo Mês'>></a></td>"
txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano+1).toString())+"') class='Cabecalho_Calendario' title='Próximo Ano'>>></a></td>"
txt += "<td width=20% align=right><a href=java script:force_close('"+div+"') class='Cabecalho_Calendario' title='Fechar Calendário'><b>X</b></a></td></tr></table></td></tr>"
txt += "<tr><td colspan='7' align='right' bgcolor='#ccccff' class='mes'><a href=java script:pop_year('"+obj+"','"+div+"','"+tam+"','" + (mmonth+1) + "') class='mes'>" + ano.toString() + "</a>"
txt += " <a href=java script:pop_month('"+obj+"','"+div+"','"+tam+"','" + ano + "') class='mes'>" + umonth[mmonth] + "</a> <div id='popd' style='position:absolute'></div></td></tr>"
txt += "<tr bgcolor='#330099'><td width='14%' class='dia' align=center><b>Dom</b></td><td width='14%' class='dia' align=center><b>Seg</b></td><td width='14%' class='dia' align=center><b>Ter</b></td><td width='14%' class='dia' align=center><b>Qua</b></td><td width='14%' class='dia' align=center><b>Qui</b></td><td width='14%' class='dia' align=center><b>Sex<b></td><td width='14%' class='dia' align=center><b>Sab</b></td></tr>"
today1 = new Date((mmonth+1).toString() +"/01/"+ano.toString());
diainicio = today1.getDay () + 1;
week = d = 1
start = false;
for (n=1;n<= 42;n++)
{
if (week == 1) txt += "<tr bgcolor='#efefff' align=center>"
if (week==diainicio) {start = true}
if (d > days[mmonth]) {start=false}
if (start)
{
dat = new Date((mmonth+1).toString() + "/" + d + "/" + ano.toString())
day_dat = dat.toString().substr(0,10)
day_today = date_Form.toString().substr(0,10)
year_dat = dat.getFullYear ()
year_today = date_Form.getFullYear ()
colorcell = ((day_dat == day_today) && (year_dat == year_today) ? " bgcolor='#FFCC00' " : "" )
var m = (mmonth+1).toString();
if( d<9 ) d = '0'+d;
if( m<9 ) m = '0'+m;
txt += "<td"+colorcell+" align=center><a href=java script:block('"+ d + "/" + m + "/" + ano.toString() +"',"+ obj +",'" + div +"') class='data'>"+ d.toString() + "</a></td>"
d ++
}
else
{
txt += "<td class='data' align=center> </td>"
}
week ++
if (week == 8)
{
week = 1; txt += "</tr>"}
}
txt += "</table>"
div2 = eval (div)
div2.innerHTML = txt
}
// função para exibir a janela com os meses
function pop_month(obj, div, tam, ano)
{
txt = "<table bgcolor='#CCCCFF' border='0' width=80>"
for (n = 0; n < 12; n++) { txt += "<tr><td align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+("01/" + (n+1).toString() + "/" + ano.toString())+"')>" + umonth[n] +"</a></td></tr>" }
txt += "</table>"
popd.innerHTML = txt
}
// função para exibir a janela com os anos
function pop_year(obj, div, tam, umonth)
{
txt = "<table bgcolor='#CCCCFF' border='0' width=160>"
l = 1
for (n=1991; n<2012; n++)
{ if (l == 1) txt += "<tr>"
txt += "<td align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+(umonth.toString () +"/01/" + n) +"')>" + n + "</a></td>"
l++
if (l == 4)
{txt += "</tr>"; l = 1 }
}
txt += "</tr></table>"
popd.innerHTML = txt
}
// função para fechar o calendário
function force_close(div)
{ div2 = eval (div); div2.innerHTML = ''}
// função para fechar o calendário e setar a data no campo de data associado
function block(data, obj, div)
{
force_close (div)
obj2 = eval(obj)
obj2.value = data
novadata = data.split('/');
}
validador
function valida_data(campo_data,formnome) {
var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
var msgErro = 'Formato inválido de campo_data.';
var vdt = new Date();
var vdia = vdt.getDay();
var vmes = vdt.getMonth();
var vano = vdt.getYear();
if ((campo_data.value.match(expReg)) && (campo_data.value!='')){
var dia = campo_data.value.substring(0,2);
var mes = campo_data.value.substring(3,5);
var ano = campo_data.value.substring(6,10);
if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){
alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
campo_data.focus();
return false;
} else{ //1
if(ano%4!=0 && mes==2 && dia>28){
alert("campo_data incorreta!! O mês especificado contém no máximo 28 dias.");
campo_data.focus();
return false;
} else{ //2
if(ano%4==0 && mes==2 && dia>29){
alert("campo_data incorreta!! O mês especificado contém no máximo 29 dias.");
campo_data.focus();
return false;
} else{ //3
if (ano > vano) {
alert("campo_data incorreta!! Ano informado maior que ano atual.");
campo_data.focus();
return false;
}else{ //4
document.getElementById(formnome).submit();
// Ou dos dois modos abaixo:
//document.form_data_final.submit();
//eval( "document." + formnome + ".submit();" )
} //4-else
} //3-else
}//2-else
}//1-else
} else { //5
alert(msgErro);
campo_data.focus();
return false;
} //5-else
}
Pergunta
Carlos Rocha
Ola pessoal.
Boa noite.
Tenho um script d eum calendario que peguei na internet que esta tendo dois problemas que já rachei a cabeça para entender e não consegui achar o erro.
1) No internet explorer, quando escolho qualquer data menor 10, ele adiciona um 0 antes do numero e faz, por exemplo, 09. Porem, quanda a data é a data do dia, ele não esta adicionando o 0. Daí, o script barra o prosseguimento do mesmo.
2) No chrome, aontece o seguinte. O script tem um validador para verificar se a data é maior ou menor que a data atual. Se menor que a data atual, ele barra a execução. Se a data foer posterior le deverá prosseguir com o screip. Porem, no chrome, qualquer data esta dando que é maior que a data do dia.
Calendario.js
validadorComo resolver isso?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.