Mi sistema trabaja con coordenadas de latitud y longitud (Grados y Minutos), y tengo una funcion que genera la mascara de entrada y hace el calculo de conversion a decimales, hasta ahi todo bien. En mi form tengo un campo que me indica cuando al latitud es al Norte (1) o al Sur (2); cuanod la latitud esta registrada al norte, es decir 1, no tengo problemas, el detalle se me presenta cuando la latitud es igual a 2, ya que en la conversion se debe multiplicar por -1 para que de negativa. Les dejo als funciones que utilizo para generar mascara de entrada y hacer los calculos.
Código PHP:
//Funcion que genera una mascara de entrada para la latitud
function mascara_lat(lat){
var mylat = '';
mylat = mylat + lat;
if (mylat.length == 2){
mylat = mylat + '°';
document.forms[0].lat.value = mylat;
}
if (mylat.length == 5){
mylat = mylat + '´';
document.forms[0].lat.value = mylat;
verifica_coord();
}
}
//Funcion que verifica las coordenadas de latitud correctas
function verifica_coord(){
m1= 1;
var dec=''
gds = (document.forms[0].lat.value.substring(0,2));
min = (document.forms[0].lat.value.substring(3,5));
situacao = "";
// verifica grados y minutos
if ((gds < 00) || (gds > 25)){
situacao = "falsa";
}
if (( min < 00) ||( min > 59)){
situacao = "falsa";
}
if (document.forms[0].ns.value == 2) { //Aqui esta el detalle, nose si lo estoy haciendo bien
m1 = -1;
}
if (document.forms[0].lat.value == "") {
situacao = "falsa";
}
if (situacao == "falsa") {
alert("Posicion Invalida!");
document.forms[0].lat.focus();
}
dec = (parseFloat(gds) + (min / 60.0)) * m1;
document.forms[0].xxxx.value = dec;
}