Foros del Web » Programando para Internet » Javascript »

Como buscar nombre aproximado con indexOf()

Estas en el tema de Como buscar nombre aproximado con indexOf() en el foro de Javascript en Foros del Web. Lo que yo quiero hacer es esto, tengo el siguiente codigo: Código: <script type="text/javascript" language="javascript"> // Carga de contactos var searchNombre = new Array(); searchNombre[0] ...
  #1 (permalink)  
Antiguo 14/04/2011, 12:30
Avatar de Dani_1270  
Fecha de Ingreso: noviembre-2009
Ubicación: España
Mensajes: 51
Antigüedad: 14 años, 5 meses
Puntos: 1
Pregunta Como buscar nombre aproximado con indexOf()

Lo que yo quiero hacer es esto, tengo el siguiente codigo:

Código:
<script type="text/javascript" language="javascript">
// Carga de contactos
var searchNombre = new Array();
searchNombre[0] = "Daniel";
searchNombre[1] = "Paula";
searchNombre[2] = "Cristian";
searchNombre[3] = "Jackson";
searchNombre[4] = "David";
// y un monton mas de arrays
function busca(){
var s = document.getElementById('buscar').value;
var posicion = "-1";
posicion=searchNombre.indexOf(s);
if (searchNombre.indexOf(s) != "-1")
{document.getElementById('bfmore').innerHTML=searchNombre[posicion];}
else{document.getElementById('bfmore').innerHTML="\<p style='font-size:10pt;color:F00;'\>No se encuentra nadie\<\/p\>"}
}
</script>
Y este es el formulario en el html:

Código HTML:
<form id="formBusqueda" name="formBusqueda">
Nombre de usuario: <input type="text" id="buscar" size="30" maxlength="25" value="" onkeypress="busca()" onchange="busca()" onkeydown="busca()" onkeyup="busca()" />&nbsp;<input type="button" id="envio" value="Buscar" onclick="busca()" />
</form>
<br />
<div id="bfmore">Aqui se muestran los datos cuando los busque (si se encuentran)</div> 
Con este código consigo buscar a un usuario, siempre y cuando introduzca el nombre exacto en el array (sino devuelve -1 y el mensaje de error). Pero me gustaría, p. ejemplo, que si yo escribo en el campo de busqueda Da en vez de Daniel, aparezca también (y si por ejemplo, hubiese un array llamado David, y pones en el campo de busqueda Da, que muestre tanto el array David como el array Daniel).
No se si me habré explicado bien :S

¿Alguna ayudita?
  #2 (permalink)  
Antiguo 14/04/2011, 13:24
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 11 meses
Puntos: 63
Respuesta: Como buscar nombre aproximado con indexOf()

Lo que estas haciendo es buscando coincidencias dentro del array, por lo cual solo te dará la respuesta cuando encuentre el elemento que se llame igual al que le das, para lo que deseas hacer, debes recorrer cada elemento del array preguntando por coincidencias dentro del String. Prueba con esto:

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. // Carga de contactos
  3. var searchNombre = new Array();
  4. searchNombre[0] = "Daniel";
  5. searchNombre[1] = "Paula";
  6. searchNombre[2] = "Cristian";
  7. searchNombre[3] = "Jackson";
  8. searchNombre[4] = "David";
  9. // y un monton mas de arrays
  10. function busca() {
  11.     var s = document.getElementById("buscar").value;
  12.     var nombres = "";
  13.     if(s!="") {
  14.         for(var i=0; i<searchNombre.length; i++) {
  15.             if(searchNombre[i].indexOf(s)!=-1) {
  16.                 nombres += searchNombre[i]+"<br/>";
  17.             }
  18.         }
  19.         if(nombres != ""){
  20.                 document.getElementById('bfmore').innerHTML=nombres;
  21.             } else {
  22.                 document.getElementById('bfmore').innerHTML="\<p style='font-size:10pt;color:F00;'\>No se encuentra nadie\<\/p\>"
  23.             }
  24.     }
  25. }
  26. </script>
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #3 (permalink)  
Antiguo 14/04/2011, 13:37
Avatar de Dani_1270  
Fecha de Ingreso: noviembre-2009
Ubicación: España
Mensajes: 51
Antigüedad: 14 años, 5 meses
Puntos: 1
[SOLUCIONADO] Como buscar nombre aproximado con indexOf()

Muchisimas gracias por solucionar mi duda!

Etiquetas: indexof, buscadores
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 11:56.