MINUTOS ENTRE HORAS

HENRIQUEGT 18/12/2012 16:20:41
#416162
Boa tarde gente.
é meu primeiro forum e preciso muito de ajuda.

Em um form tenho 3 INPUTS:

<form method=[Ô]post[Ô] action=[Ô]<%=MM_editAction%>[Ô] name=[Ô]form1[Ô] onSubmit=[ô]return confereCampos(this)[ô]>
<input type=[Ô]text[Ô] name=[Ô]Inicio[Ô] maxlength=[Ô]5[Ô] onkeypress=[Ô]valida_horas(this)[Ô] size=[Ô]15[Ô] class=[ô]obrigatorio[ô]>
<input type=[Ô]text[Ô] name=[Ô]Fim[Ô] maxlength=[Ô]5[Ô] onKeyPress=[Ô]valida_horas(this)[Ô] size=[Ô]15[Ô] class=[ô]obrigatorio[ô] onBlur=[Ô]subtrai()[Ô]>
<input type=[Ô]text[Ô] name=[Ô]Tempo[Ô] maxlength=[Ô]5[Ô] size=[Ô]15[Ô]>

Inicio e Fim é onde coloco hora inicial e hora final de produção aqui da empresa (hh:mm)

No momento que coloco a hora final e saio da input deveria calcular o intervelo em minutos, mas não está funcionando a função abaixo, pois nada aparece na 3a Input.

function subtrai()
{
a= document.form1.Inicio.value
b= mid(a,1,2)*60 + mid(a,4,2)

c= document.form1.Fim.value
d= mid(c,1,2)*60 + mid(c,4,2)

total_horas= d - b
document.form1.Tempo.value=total_horas;
}

Por favor, help-me... tenho de entregar esse resultado rapido.
KERPLUNK 18/12/2012 16:27:03
#416163
A dica do malandro, é espalhar Alerts no seu JS:

function subtrai()
{
a= document.form1.Inicio.value;
alert(a);
b= mid(a,1,2)*60 + mid(a,4,2);
alert(b);
c= document.form1.Fim.value;
alert(c);
d= mid(c,1,2)*60 + mid(c,4,2);
alert(d);
total_horas= d - b;
alert(total_horas);
document.form1.Tempo.value=total_horas;
}

Rode e veja...
HENRIQUEGT 19/12/2012 13:48:35
#416193
Cara, eu ia fazer assim... apagar Alert por Alert... mas só rolou o alerto do [Ô]a[Ô]... o Alert do [Ô]b[Ô] nem aparece... pra falar a verdade... só o Alert do [Ô]a[Ô] que aparece. Nos outros Alerts nem abrem... nem da erro....

Não sei oq faço mais...
KERPLUNK 19/12/2012 17:57:54
#416208
Ok, então o erro está em [Ô]b= mid(a,1,2)*60 + mid(a,4,2);[Ô]

Abra sua página no Chrome e pressione CTRL + SHIFT + J, uma janela vai aparecer, nela vai constar o erro que está acontecendo...
HENRIQUEGT 20/12/2012 07:32:42
#416220
Deu o erro em vermelho:

function subtrai()
{
a= document.form1.Inicio.value
b= mid(a,1,2)*60 + mid(a,4,2)

[txt-color=#e80000]Uncaught ReferenceError: mid is not defined[/txt-color]

alert(b)
c= document.form1.Fim.value
alert(c)
d= mid(c,1,2)*60 + mid(c,4,2)
alert(d)
total_horas= d - b
alert(total_horas)
document.form1.Tempo.value=total_horas
}
OCELOT 20/12/2012 09:03:50
#416224
Resposta escolhida
Em javascript não existe a função mid, você tem que usar o método substring para pegar isso, sendo que ele funciona diferente do mid, você tem que dizer nele o indice inicial e o final

Considerando que o formato do texto esteja sempre do tipo [ô]HH:MM[ô] ficaria mais ou menos assim

b = parseInt(a.substring(0,2)) * 60 + parseInt(a.substring(3,5));

usar o parseInt é importante pois se não for usado e um valor do tipo [ô]02:10[ô] for passado o resultado seria [ô]12010[ô] em vez de [ô]130[ô] já que o operador [ô]+[ô] sempre concatena os valores se um deles for string.
HENRIQUEGT 20/12/2012 13:40:37
#416251
Cara, vlw! Sou novo em programação e to aprendendo a caçar no google, rs.

Abraços!
Tópico encerrado , respostas não são mais permitidas