Foros del Web » Programando para Internet » Javascript »

De una serie de números, quedarme con los dos primeros.

Estas en el tema de De una serie de números, quedarme con los dos primeros. en el foro de Javascript en Foros del Web. Hola gente, como va? hace tiempo q no posteaba, ya q mi web iba más o menos bien, pero ahora se me ha ocurrido una ...
  #1 (permalink)  
Antiguo 12/08/2003, 01:06
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
De una serie de números, quedarme con los dos primeros.

Hola gente, como va? hace tiempo q no posteaba, ya q mi web iba más o menos bien, pero ahora se me ha ocurrido una cosita, a ver si me podrían ayudar...

El tema es q tengo una función, la cual me la enseñasteis aquí para hacer una consulta sql a una BD, es esta:

<script language="Javascript" type=text/JavaScript>
function f_actividad_provin(){
window.document.form1.actividad_provinoculta.value = "Recibo.CPostalFiscal Like '" + document.form1.actividad_provin.value .split(",").join("%' or Recibo.CPostalFiscal Like '")+"%'"
}
</script> Asociada a un onChange de una caja de texto. Pues bien, me gustaría modificarla para q cuando el usuario introduzca un número mayor de dos cifras, quedarme con las dos primeras.

En la función anterior, pasa esto:
- Cuando el usuario introduce 1234,4321, se queda así: Recibo.CPostalFiscal Like '1234%' or Recibo.CPostalFiscal Like '4321%'.

Ahora, me gustaría que pasara esto:
Recibo.CPostalFiscal Like '12%' or Recibo.CPostalFiscal Like '43%'

Entendeis?

Muchas gracias, hasta pronto.
  #2 (permalink)  
Antiguo 12/08/2003, 04:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola tom2000:

De los elementos separados por split debes hacer el substr(0, 2), y luego concatenarlos ...

Prueba esto a ver si te sirve:

<b onclick="var n = '1234,4321'; alert('\'' + n.split(',')[0].substr(0, 2) + '\'%\' or Recibo.CPostalFiscal Like \'' + n.split(',')[1].substr(0, 2) + '%\'')">Pincha aquí</b>

La función sería lo que está dentro del alert.

Saludos
  #3 (permalink)  
Antiguo 12/08/2003, 06:07
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
Me has mareado más de lo q estaba. Perdona mi incompetencia, pero... ¿Todo eso lo debo poner en el botón?
Yo lo que quiero es modificar la función y no el botón.
¿Me podrías explicar un poquito mejor eso?
El usuario no sólo puede poner 1234,4321, si no cualquier número.

Gracias.
  #4 (permalink)  
Antiguo 12/08/2003, 10:54
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Perdona si te he mareado, pero en principio puse una cosa para copiar y pegar para que vieras el resultado, y pudieras adaptarlo...

Te explicaré mejor el objetivo y funcionamiento... y de paso intentaré darte pistas para su uso.

Cuando usas split(",") conviertes la cadena en un array... y tendrá tantos elementos como haya en la cadena original que estén separados por esa coma...

Para la cadena "1234,4321", el resultado es un primer elemento "1234" (con índce del array 0) y un segundo elemento "4321" (con índice 1).

Por otro lado, si quieres los dos primeros caracteres de una cadena, se puede obtener con substr(0, 2)... (también existe substring, pero no es mi intención liarte...)

Ahora, con estos datos vamos a fabricar la nueva función... llámala como te interese a tí, pero yo la voy a llamar resultado:

function resultado(entrada) {// la entrada es un número con decimales...
var devolveremos = "Recibo.CPostalFiscal Like '";// la cadena empieza así...
var nuevo_array = entrada.split(",");// en teoría se quedaría en un array de dos elementos...
devolveremos += nuevo_array[0].substr(0, 2); // le añadimos los 2 primeros dígitos del nº...

//Si el número tuviera menos de 2 dígitos podría no funcionar bien... pero lo depuraremos luego

devolveremos += "%' or Recibo.CPostalFiscal Like '";
devolveremos += nuevo_array[1].substr(0, 2); // ahora le añadimos los 2 últimos dígitos...
devolveremos += "%'";
return devolveremos;
}

Para el uso, sería:

window.document.form1.actividad_provinoculta.value = resultado(document.form1.actividad_provin.value);

Supongo que puede tener fallos, pero pruébalo, y dime como te va.

Saludos
  #5 (permalink)  
Antiguo 13/08/2003, 01:17
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
Muchas gracias, haora sí q entiendo todo lo que hace cada cosa,pero... hay dos cosillas en las q me he quedado estancado

1: No pillo es dd debería poner lo de...

window.document.form1.actividad_provinoculta.value = resultado(document.form1.actividad_provin.value);

2: El usuario puede introducir más de uno y más de dos números, quiero decir que no sé cuántos números meterá, por eso, ¿crees q debería meter el código de esa función dentro de un for?
¿Alguna sugerencia para esto?

Gracias, hasta pronto.

PD: Por cierto, le pillas un puñao haciendo las explicaciones.
  #6 (permalink)  
Antiguo 13/08/2003, 02:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Lo de las explicaciones, lo prefiero porque quién lea el tema puede aprender, y si me equivoco (que pasa con frecuencia), me pueden corregir.

Ahora, volviendo al tema... La verdad es que no sabía lo que necesitabas, y adapté el "Resultado" al ejemplo que pusiste, pero, tal como dices, podría ser mejor empezar por un bucle for para hacer que los nº's tengan dos dígitos, y luego "devolver la concatenación...

Vamos allá.

function resultado(entrada) {// la entrada es un número con decimales...
var nuevo_array = entrada.split(",");
// con un bucle for ponemos los nº's con 2 dígitos
for (var i = 0; i < nuevo_array.length; i ++)
nuevo_array[i] = nuevo_array[i].substr(0, 2);
return "Recibo.CPostalFiscal Like '" + nuevo_array.join("%' or Recibo.CPostalFiscal Like '") + "%'";
}

Pruébalo y dime si va bien.

Saludos
  #7 (permalink)  
Antiguo 13/08/2003, 02:59
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
Lo q pasa esq esa funcion la tengo asociada al evento onChange de la caja de texto y no sé dd debo poner lo de

window.document.form1.actividad_provinoculta.value = resultado(document.form1.actividad_provin.value);

Hasta luego.
  #8 (permalink)  
Antiguo 13/08/2003, 09:38
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Sencillamente pones onchange="window.document.form1.actividad_provinoc ulta.value = resultado(document.form1.actividad_provin.value)"

Saludos

P.D: Si vez que sigue sin funcionar, avisa para hacerte una página con un ejemplo.
  #9 (permalink)  
Antiguo 13/08/2003, 09:50
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
PERFECTO!!! MUCHAS GRACIAS!!!

Ya lo había puesto así pero se me olvidó decirlo.

Hasta que se me ocurra alguna otra cosilla...

Salut!! i força al canut!!
  #10 (permalink)  
Antiguo 14/08/2003, 01:09
 
Fecha de Ingreso: julio-2003
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola!! Soy yo otra vez. Aquello funcionó perfectamente, pero me gustaría me explicaseis qué es lo que hace exactamente la funcion join, sola, o acompañada de split.

¿Dónde puedo ver un listado/explicación de funciones como esas para javascript?

Gracias, hasta pronto.
  #11 (permalink)  
Antiguo 14/08/2003, 01:41
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

La verdad es que la respuesta es muy sencilla, Se trata de "métodos" o funciones que se combinan perfectamente... split se aplica a las "cadenas" de texto, y las convierte en un array de cadenas... y el parámetro que lleva es el que sirve de separador ... la verdad es que es un poco difícil de explicar con palabras, pero con un ejemplo es más fácil:

Si una cadena es "1234.4321" según tu propio ejemplo, y usas "split('.')" nos dá un array de 2 elementos (los separados por el punto)... con esto "1234.2345.3456"el array sería de 3 elementos...

join() se aplica a los arrays, y los convierte en una sola cadena encadenada por lo que tenga como parámetro.

Un ejemplo sencillo sería crear un listado de cualquier array añadiéndole el tag "br"...
document.write(listado.join("<br>"));
Un ejemplo de uso combinado (creo que está en las FAQs de Javascript) es para invertir las barras de una cadena...
"esta/cadena".split("/").join("\"), equivale a "esta\cadena"

Para buscar referencias, yo no uso nada concreto, abro google y busco "javascript join" y con las primeras referencias que encuentro en español, me suelen bastar.

Saludos
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 05:54.