Foros del Web » Programando para Internet » Javascript »

Como hacerlo funcionar?

Estas en el tema de Como hacerlo funcionar? en el foro de Javascript en Foros del Web. Hola a todos. Tengo un javascript que no se como hacerlo funcinar, y agradeceria mucho vuestra ayuda. Lo que (se supone) que hace, es que ...
  #1 (permalink)  
Antiguo 11/09/2007, 13:18
 
Fecha de Ingreso: septiembre-2007
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 0
Como hacerlo funcionar?

Hola a todos.

Tengo un javascript que no se como hacerlo funcinar, y agradeceria mucho vuestra ayuda.

Lo que (se supone) que hace, es que despues de meter un numero con un digito de control, valida si es correcto o no. El caso es que no se como llamarlo para que haga su trabajo.

Código:
function control (s) {
var etal = /^[0-9]{15}$/;
  if (!etal.test(s))
    return false;
  sum = 0; mul = 2; l = 14;
  for (i = 0; i < l; i++) {
    digit = s.substring(l-i-1,l-i);
    tp = parseInt(digit,10)*mul;
    if (tp >= 10)
         sum += (tp % 10) +1;
    else
         sum += tp;
    if (mul == 1)
         mul++;
    else
         mul--;
    }
  chk = ((10 - (sum % 10)) % 10);
  if (chk != parseInt(s.substring(14,15),10))
    return false;
  return true;
}
Alguna sugerencia?

Un saludo!
  #2 (permalink)  
Antiguo 12/09/2007, 03:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Como hacerlo funcionar?

La funcion boolean control() te dice si es correcto el número que le pases. Parece el mismo algoritmo que se usa para el CIF, pero en este caso se pasa una letra entre estas ABCDEFGHPQS en primera posición el dígito de control (al final) puede ser un dígito o la letra correspondiente a en esta lista JABCDEFGHI (si comienzas desde cero). El CIF son 9 caracteres.
A este método se le ha de pasar una cadena de 15 dígitos (0-9) el último es el de control que se comprobará según el algoritmo y si no es correcto o si se pasa una cadena no válidada if (!etal.test(s)) devolverá false (etal es la expresión regular para comprobar que son 15 dígitos).
  #3 (permalink)  
Antiguo 12/09/2007, 08:37
 
Fecha de Ingreso: septiembre-2007
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Como hacerlo funcionar?

Muchas gracias Txumai por tu respuesta.

De todos modos, a lo que me referia era a cual seria el código que debo utilizar para hacer que funcione. Es decir, como llamarlo desde un campo de formulario para que me lo ejecute. He provado con un evento onblur para que me lo valide al momento, pero no se como hacerlo.

Gracias de nuevo por la ayuda.
  #4 (permalink)  
Antiguo 12/09/2007, 09:13
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Como hacerlo funcionar?

Hola schizo

Prueba poniendo así el formulario:

Código:
<form onsubmit = "return control(cif.value)">
<input type="text" name="cif">
...
</form>
De esta forma se mandará el formulario sólo si está bien el código.

Saludos,
  #5 (permalink)  
Antiguo 12/09/2007, 16:28
 
Fecha de Ingreso: septiembre-2007
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Como hacerlo funcionar?

Gracias JavierB, aunque no busco validarlo enviando el formulario.

El valor no es un cif, si no un numero de 15 cifras que la última de ellas es un número de control.

Lo que busco es que al introducir el valor en el campo del formulario y quitar el foco, me aparezca al lado del campo y segun la validacion si es correcto o no.

He probado mil maneras, pero no se como hacerlo funcionar.

Se agradece cualquier información por que ya no se que hacer!

Gracias a todos.
  #6 (permalink)  
Antiguo 13/09/2007, 09:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Como hacerlo funcionar?

Puedes modificar el retorno de la función de forma que cuando sea incorrecto devuelva este dígito y en caso de correcto te devuelva "" (cadena vacia). Entonces en el manejador del onblur o mejor en el onchage (sólo si se modifica el valor) al comprobarse puedes simplemente presentar un alert("Codigo incorrecto, debe terminar en "+sCod); por ejemplo. Si quieres ponerlo al lado sin alert, debes tener un <span id=idCC>&nbsp;</span> junto al campo (input) y en el manejador hacer idCC.innerText=sCod; Esto puede dar problemas a veces.
Otra cosa es que quieras modificar la función para sólo pasar 14 dígitos y devolver el CC para añadirlo al campo complentandose los 15 de longitud, que sería similar devolviendo siempre el CC.
  #7 (permalink)  
Antiguo 13/09/2007, 11:05
 
Fecha de Ingreso: septiembre-2007
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Como hacerlo funcionar?

Cita:
Iniciado por Txumai Ver Mensaje
Si quieres ponerlo al lado sin alert, debes tener un <span id=idCC>&nbsp;</span> junto al campo (input) y en el manejador hacer idCC.innerText=sCod;
Eso es exactamente lo que busco, Txumai

Así, de esa manera, lo que busco es que al introducir el número de 15 digitos que tiene que validar, justo despues del campo del formulario aparezca "Correcto" o "No es correcto, revise el número", aunque a unas malas me conformo con que me devuelva 0 o 1.

Lo que no se es como hacerlo funcionar, como llamar la funcion para que valide y aparezca el resultado junto al campo del formulario.

¿Seria mucho pedir que me ayuden poniendo como deberia de quedar el código?

Graaaaaaaacias por la ayuda!
  #8 (permalink)  
Antiguo 14/09/2007, 11:46
 
Fecha de Ingreso: septiembre-2007
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Como hacerlo funcionar?

nadie que pueda ayudarme?

Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:42.